DESTYPE=BLOBDestination in Reports 11g Fails With : java.lang.IllegalAccessError: tried to access cl
DESTYPE=BLOBDestination in Reports 11g Fails With : java.lang.IllegalAccessError: tried to access cl
Titleimage
Posted by Patrick Hamou on 2017:09:07 17:54:42
APPLIES TO:
Oracle Reports Developer - Version 11.1 to 11.1.1.4.0 [Release 11g]
Information in this document applies to any platform.
SYMPTOMS
Exception :
REP-50125: An internal exception occurred: org.omg.CORBA.UNKNOWN: ----------BEGIN server-side stack trace----------
org.omg.CORBA.UNKNOWN: vmcid: SUN minor code: 202 completed: Maybe
at com.sun.corba.se.impl.logging.ORBUtilSystemException.runtimeexception(ORBUtilSystemException.java:8869)
at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.convertThrowableToSystemException(CorbaMessageMediatorImpl.java:1920)
at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleThrowableDuringServerDispatch(CorbaMessageMediatorImpl.java:1870)
at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleThrowableDuringServerDispatch(CorbaMessageMediatorImpl.java:1823)
at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:258)
at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1682)
at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1540)
at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:922)
at com.sun.corba.se.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:181)
at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:694)
at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.dispatch(SocketOrChannelConnectionImpl.java:451)
at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.doWork(SocketOrChannelConnectionImpl.java:1213)
at com.sun.corba.se.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:471)
at com.sun.corba.se.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:500)
Caused by: java.lang.IllegalAccessError: tried to access class oracle.jdbc.driver.OracleResultSet from class oracle.reports.plugin.destination.blob.BLOBHelper
at oracle.reports.plugin.destination.blob.BLOBHelper.insertBLOB(BLOBHelper.java:82)
at oracle.reports.plugin.destination.blob.BLOBDestination.sendFile(BLOBDestination.java:219)
at oracle.reports.server.Destination.send(Destination.java:578)
at oracle.reports.server.JobObject.distribute(JobObject.java:2013)
at oracle.reports.server.JobManager.updateJobStatus(JobManager.java:2761)
at oracle.reports.server.EngineCommImpl.updateEngineJobStatus(EngineCommImpl.java:154)
at oracle.reports.server.EngineCommPOA._invoke(EngineCommPOA.java:94)
at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:637)
at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:189)
... 9 more
----------END server-side stack trace---------- vmcid: SUN minor code: 202 completed: Maybe.
when using the BLOBDestination.jar provided on OTN in the "Oracle Reports - Plugin Exchange" in Oracle Reports 11g.
"Oracle Reports - Plugin Exchange" : http://www.oracle.com/technetwork/middleware/reports/index-085705.html
CAUSE
1. The oracle.jdbc.driver package, which was deprecated in Oracle Database release 9.0.1, is desupported in the Release 11g R1
Oracle Database JDBC Developer's Guide and Reference,
11g Release 1 (11.1)
Part Number B31224-03
Interface Changes
The oracle.jdbc.driver package, which was deprecated in Oracle Database release 9.0.1, is desupported in this release. Code having references to this package will not compile and run. You can use oracle.jdbc package instead of this package.
2. The BLOB method getBinaryOutputStream(long pos) is deprecated :
Oracle Database SecureFiles and Large Objects Developer's Guide
11g Release 1 (11.1)
Part Number B28393-02
Oracle Proprietary Method (Deprecated): getBinaryOutputStream(long pos)
JDBC 3.0 Standard Method Replacement: setBinaryStream(long pos)
SOLUTION
The code modifications described below are necessary only if you are using a "custom" version of BLOBDestination.
If you were using the BLOBDestination.jar provided on OTN in the "Oracle Reports - Plugin Exchange" , just download the jar file BLOBDestination11g.jar modified for Reports 11g provided in the document :
BLOB Destination Configuration in Reports 11g (Doc ID 1151455.1)
The file BLOBHelper.java must be modified :
Modification 1 :
Replace the line
import oracle.jdbc.driver.OracleResultSet;
by
import oracle.jdbc.OracleResultSet;
Modification 2 :
Replace the line
outStream = blob.getBinaryOutputStream();
by
outStream = blob.setBinaryStream(0L);
Caution
This sample code is provided for educational purposes only and not supported by Oracle Support Services. It has been tested internally, however, and works as documented. We do not guarantee that it will work for you, so be sure to test it in your environment before relying on it.
REFERENCES
NOTE:1151455.1 - BLOB Destination Configuration in Reports 11g
Posted by Patrick Hamou on 2017:09:07 17:54:42