DESTYPE=BLOBDestination in Reports 11g Fails With : java.lang.IllegalAccessError: tried to access class oracle.jdbc.driver.OracleResultSet

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

Return to Blog