Hi
I have a j2ee application that uses the Java Reporting Component (JRC). At runtime, the code programmatically changes the connection type and schema name of a crystal report before running it. The connection that was used when designing the report is replaced with new JNDI parameters pointing to a Weblogic/Oracle datasource.
The application works perfectly when using Weblogic 11, but the same code and report fails when deployed to Weblogic 12.
I used Version 12.2.207.916 of the JRC, and updating to the most current version I could find (12.2.217) did not solve the problem.
The code snippet below shows how the connection and schema name is replaced for each of the tables in the report (not all the code is shown here)...
PropertyBag propertyBag = new PropertyBag();
propertyBag.put("Database DLL", "crdb_jdbc.dll");
propertyBag.put("JNDI Datasource Name", jndiName);
propertyBag.put("Initial Context", "");
while (tableList.hasNext()) {
ITable table = tableList.next();
:
:
ITable tableNew = (ITable) table.clone(true);
IConnectionInfo connectionInfo = table.getConnectionInfo();
connectionInfo.setAttributes(propertyBag);
connectionInfo.setKind(ConnectionInfoKind.SQL);
tableNew.setQualifiedName(newQualifier + "." + table.getName());
tableNew.setConnectionInfo(connectionInfo);
dbController.setTableLocation(table, tableNew);
:
}
The setTableLocation() function throws the following exception ...
2014-05-13 16:46:27,173 ERROR [[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'] JRCCommunicationAdapter detected an exception: Unexpected database connector error
at com.crystaldecisions.reports.queryengine.Table.u7(SourceFile:2409)
at com.crystaldecisions.reports.dataengine.datafoundation.AddDatabaseTableCommand.new(SourceFile:529)
at com.crystaldecisions.reports.common.CommandManager.a(SourceFile:71)
at com.crystaldecisions.reports.common.Document.a(SourceFile:203)
at com.businessobjects.reports.sdk.requesthandler.f.a(SourceFile:175)
at com.businessobjects.reports.sdk.requesthandler.DatabaseRequestHandler.byte(SourceFile:1079)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.do(SourceFile:1167)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.if(SourceFile:661)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.a(SourceFile:167)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.a(SourceFile:529)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.call(SourceFile:527)
at com.crystaldecisions.reports.common.ThreadGuard.syncExecute(SourceFile:102)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.for(SourceFile:525)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.int(SourceFile:424)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(SourceFile:352)
at com.businessobjects.sdk.erom.jrc.a.a(SourceFile:54)
at com.businessobjects.sdk.erom.jrc.a.execute(SourceFile:67)
at com.crystaldecisions.proxy.remoteagent.RemoteAgent$a.execute(SourceFile:716)
at com.crystaldecisions.proxy.remoteagent.CommunicationChannel.a(SourceFile:125)
at com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(SourceFile:537)
at com.crystaldecisions.sdk.occa.report.application.ds.a(SourceFile:186)
at com.crystaldecisions.sdk.occa.report.application.an.a(SourceFile:108)
at com.crystaldecisions.sdk.occa.report.application.b0.if(SourceFile:148)
at com.crystaldecisions.sdk.occa.report.application.b0.b(SourceFile:95)
at com.crystaldecisions.sdk.occa.report.application.bb.int(SourceFile:96)
at com.crystaldecisions.proxy.remoteagent.UndoUnitBase.performDo(SourceFile:151)
at com.crystaldecisions.proxy.remoteagent.UndoUnitBase.a(SourceFile:106)
at com.crystaldecisions.sdk.occa.report.application.DatabaseController.a(SourceFile:2159)
at com.crystaldecisions.sdk.occa.report.application.DatabaseController.a(SourceFile:543)
at com.crystaldecisions.sdk.occa.report.application.DatabaseController.a(SourceFile:3898)
at com.crystaldecisions.sdk.occa.report.application.DatabaseController.setTableLocation(SourceFile:2906)
at com.systest.reporting.engine.crystal.CrystalReportEngine.replaceConnection(CrystalReportEngine.java:523)
at com.systest.reporting.engine.crystal.CrystalReportEngine.changeDataSource(CrystalReportEngine.java:449)
at com.systest.CrystalReportPane.setReportDataSourceDetails(CrystalReportPane.java:170)
at com.systest.CrystalReportPane.commandLoad(CrystalReportPane.java:136)
at com.systest.ReportRunner.CrystalReport.Load(CrystalReport.java:401)
at com.systest.ReportRunner.SaveReportToFile(ReportRunner.java:1385)
Any idea what I can do to fix this ?
Thanks in advance!