Home
Analytics
BIRT connection.close
snmadhav
We currently have BIRT reports working in a server environment and is working fine. We are extending it to run in a batch process. BIRT seems to be trying to "close" the connection and the following exception is being thrown. Is there something I'm missing or some other step I would need to perform for it not to close the connection but be able to pass it back to the connection pool? The same code works fine in the server environment.<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>
com.ibm.db2.jcc.am.SqlException: [jcc][t4][10251][10308][3.63.81] java.sql.Connection.close() requested while a transaction is in progress on the connection.
The transaction remains active, and the connection cannot be closed. ERRORCODE=-4471, SQLSTATE=null
at com.ibm.db2.jcc.am.fd.a(fd.java:663)
at com.ibm.db2.jcc.am.fd.a(fd.java:60)
at com.ibm.db2.jcc.am.fd.a(fd.java:120)
at com.ibm.db2.jcc.am.ib.u(ib.java:1293)
at com.ibm.db2.jcc.am.ib.x(ib.java:1315)
at com.ibm.db2.jcc.am.ib.v(ib.java:1301)
at com.ibm.db2.jcc.am.ib.close(ib.java:1283)
at org.apache.commons.dbcp.DelegatingConnection.close(DelegatingConnection.java:151)
at com.****.****.common.db.connmgt.impl.ConnectionWrapper.close(ConnectionWrapper.java:38)
at org.eclipse.birt.report.data.oda.jdbc.Connection.close(Connection.java:447)
at org.eclipse.datatools.connectivity.oda.consumer.helper.OdaConnection.close(OdaConnection.java:350)
at org.eclipse.birt.data.engine.odaconsumer.Connection.close(Connection.java:245)
at org.eclipse.birt.data.engine.executor.DataSource.releaseConnection(DataSource.java:113)
at org.eclipse.birt.data.engine.executor.DataSource.access$0(DataSource.java:97)
at org.eclipse.birt.data.engine.executor.DataSource$ShutdownListener.dataEngineShutdown(DataSource.java:93)
at org.eclipse.birt.data.engine.impl.DataEngineImpl.shutdown(DataEngineImpl.java:575)
at org.eclipse.birt.report.data.adapter.impl.DataRequestSessionImpl.shutdown(DataRequestSessionImpl.java:509)
at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.shutdown(AbstractDataEngine.java:348)
at org.eclipse.birt.report.engine.executor.ExecutionContext.closeDataEngine(ExecutionContext.java:895)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:185)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:77)
</pre>
<br />
We pass the connection as follows:<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>
Connection dbConn=myConnectionProvider.getConnection();
task.getAppContext().put("OdaJDBCDriverPassInConnection", dbConn);
task.setParameterValue("dbConnObj", dbConn);
</pre>
<br />
Thanks & Regards,<br />
Madhav
Find more posts tagged with
Comments
snmadhav
We currently have BIRT reports working in a server environment and is working fine. We are extending it to run in a batch process. BIRT seems to be trying to "close" the connection and the following exception is being thrown. Is there something I'm missing or some other step I would need to perform for it not to close the connection but be able to pass it back to the connection pool? The same code works fine in the server environment.<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>
com.ibm.db2.jcc.am.SqlException: [jcc][t4][10251][10308][3.63.81] java.sql.Connection.close() requested while a transaction is in progress on the connection.
The transaction remains active, and the connection cannot be closed. ERRORCODE=-4471, SQLSTATE=null
at com.ibm.db2.jcc.am.fd.a(fd.java:663)
at com.ibm.db2.jcc.am.fd.a(fd.java:60)
at com.ibm.db2.jcc.am.fd.a(fd.java:120)
at com.ibm.db2.jcc.am.ib.u(ib.java:1293)
at com.ibm.db2.jcc.am.ib.x(ib.java:1315)
at com.ibm.db2.jcc.am.ib.v(ib.java:1301)
at com.ibm.db2.jcc.am.ib.close(ib.java:1283)
at org.apache.commons.dbcp.DelegatingConnection.close(DelegatingConnection.java:151)
at com.****.****.common.db.connmgt.impl.ConnectionWrapper.close(ConnectionWrapper.java:38)
at org.eclipse.birt.report.data.oda.jdbc.Connection.close(Connection.java:447)
at org.eclipse.datatools.connectivity.oda.consumer.helper.OdaConnection.close(OdaConnection.java:350)
at org.eclipse.birt.data.engine.odaconsumer.Connection.close(Connection.java:245)
at org.eclipse.birt.data.engine.executor.DataSource.releaseConnection(DataSource.java:113)
at org.eclipse.birt.data.engine.executor.DataSource.access$0(DataSource.java:97)
at org.eclipse.birt.data.engine.executor.DataSource$ShutdownListener.dataEngineShutdown(DataSource.java:93)
at org.eclipse.birt.data.engine.impl.DataEngineImpl.shutdown(DataEngineImpl.java:575)
at org.eclipse.birt.report.data.adapter.impl.DataRequestSessionImpl.shutdown(DataRequestSessionImpl.java:509)
at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.shutdown(AbstractDataEngine.java:348)
at org.eclipse.birt.report.engine.executor.ExecutionContext.closeDataEngine(ExecutionContext.java:895)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:185)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:77)
</pre>
<br />
We pass the connection as follows:<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>
Connection dbConn=myConnectionProvider.getConnection();
task.getAppContext().put("OdaJDBCDriverPassInConnection", dbConn);
task.setParameterValue("dbConnObj", dbConn);
</pre>
<br />
Thanks & Regards,<br />
Madhav
snmadhav
Found that the following is working in our environment now:<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>
task.getAppContext().put("OdaJDBCDriverPassInConnectionCloseAfterUse", false);
</pre>
<br />
Thanks & Regards,<br />
Madhav