Anyone,
I have successfully integrated BIRT reports
in my web application and deployed it on Tomcat. However, when I tried to
deploy the application on Weblogic 8.1 reports wouldn’t work. I
discovered that the problem is in dynamically assigned query parameters.
Any thoughts?
The assignment in my beforeOpen
method:
queryText="SELECT distinct
APPLICATION_ID, OBJECT_ID, OBJECT_NAME, DECODE(CHG_TRACK_OBJECT_STATUS,
'ENABLED', 'Yes', 'No') AS OBJECT_ENABLED_FLAG FROM
RPT_CHANGE_TRACKING_V WHERE APPLICATION_ID = ? AND OBJECT_ID in (" + params["selectedObjIds"] + ")
AND OBJ_VAL_DISP in (" + params["selectedObjValNamesCsv"] + ")
AND CHG_HIST_CAPABLE_FLAG = 'Y'";
The error message:
Error0 : odaconsumer.CannotGetResultSetMetaData ( 1 time(s) )
detail :
org.eclipse.birt.data.engine.core.DataException: Cannot get the result set
metadata.
SQL statement does not return a ResultSet object.
ORA-01008: not all variables bound
at org.eclipse.birt.data.engine.odaconsumer.PreparedStatement.getRuntimeMetaData(PreparedStatement.java:379)
at
org.eclipse.birt.data.engine.odaconsumer.PreparedStatement.getProjectedColumns(PreparedStatement.java:339)
at org.eclipse.birt.data.engine.odaconsumer.PreparedStatement.setColumnsProjection(PreparedStatement.java:1028)
at
org.eclipse.birt.data.engine.executor.DataSourceQuery.prepare(DataSourceQuery.java:315)
at
org.eclipse.birt.data.engine.impl.PreparedExtendedDSQuery$ExtendedDSQueryExecutor.prepareOdiQuery(PreparedExtendedDSQuery.java:277)
at
org.eclipse.birt.data.engine.impl.PreparedQuery$Executor.prepareExecution(PreparedQuery.java:672)
at
org.eclipse.birt.data.engine.impl.PreparedQuery$Executor.access$000(PreparedQuery.java:498)
at org.eclipse.birt.data.engine.impl.PreparedQuery.doPrepare(PreparedQuery.java:225)
at
org.eclipse.birt.data.engine.impl.PreparedDataSourceQuery.execute(PreparedDataSourceQuery.java:145)
at
org.eclipse.birt.report.engine.data.dte.DteDataEngine.execute(DteDataEngine.java:205)
at
org.eclipse.birt.report.engine.executor.QueryItemExecutor.openResultSet(QueryItemExecutor.java:62)
at
org.eclipse.birt.report.engine.executor.TableItemExecutor.execute(TableItemExecutor.java:122)
at org.eclipse.birt.report.engine.executor.ReportExecutorVisitor.visitTableItem(ReportExecutorVisitor.java:187)
at
org.eclipse.birt.report.engine.ir.TableItemDesign.accept(TableItemDesign.java:69)
at
org.eclipse.birt.report.engine.executor.ReportExecutor.execute(ReportExecutor.java:125)
at org.eclipse.birt.report.engine.executor.ReportExecutor.execute(ReportExecutor.java:89)
at
org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:175)
at
com.applimation.amplatform.api.report.birt.AMBirtReportAPI.generateReport(AMBirtReportAPI.java:137)
at
com.applimation.amplatform.api.report.birt.AMBirtReportAPI.generateReport(AMBirtReportAPI.java:68)
at
com.applimation.aps.bo.APSExportOptBO.createReportChgTrkngPdfObjsPage(APSExportOptBO.java:878)
at com.applimation.aps.action.APSExportOptAction.execute(APSExportOptAction.java:443)
at
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
at
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
at
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6718)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3764)
at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2644)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
Caused by: org.eclipse.birt.report.data.oda.jdbc.JDBCException: SQL statement
does not return a ResultSet object.
ORA-01008: not all variables bound
at org.eclipse.birt.report.data.oda.jdbc.Statement.executeQuery(Statement.java:342)
at
org.eclipse.birt.report.data.oda.jdbc.Statement.getMetaData(Statement.java:296)
at
org.eclipse.datatools.connectivity.oda.consumer.helper.OdaQuery.doGetMetaData(OdaQuery.java:387)
at
org.eclipse.datatools.connectivity.oda.consumer.helper.OdaQuery.getMetaData(OdaQuery.java:355)
at
org.eclipse.birt.data.engine.odaconsumer.PreparedStatement.getRuntimeMetaData(PreparedStatement.java:369)
... 36 more
Caused by: java.sql.SQLException: ORA-01008: not all variables bound
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:582)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1986)
at
oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:880)
at
oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2516)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2850)
at
oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:609)
at
oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:537)
at weblogic.jdbc.wrapper.PreparedStatement.executeQuery(PreparedStatement.java:124)
at
org.eclipse.birt.report.data.oda.jdbc.Statement.executeQuery(Statement.java:338)
... 40 more