Application Module - No Trx Please
25409Apr 9 2003 — edited Apr 17 2003OK, so I have an application module with a bunch of ViewObjects and ViewObjectLinks and no entity objects. All ViewObjects are defined with SQL queries. I use this application module in Stateless mode using BC4J JSP tags only.
Once in awhile (maybe 4 times a day), we get a stack trace like below. The person is "stuck" after it happens the first time - as if they are hanging onto an appmod reference with a stale JDBC connection. That'd be OK except it looks like it's trying to do a rollback using this stale connection before it releases it and grabs a new app mod from the pool. Why is it doing a rollback? I have nothing in the code that implies any updating is going on. Can I use an application module with no implicit trx? It looks possible to do this with Stateful mode, but I don't want to use that unless it's necessary.
JBO-30003: The application pool (com.cxtec.itemsearch.db.ItemSearchAppMod.ItemSearchAppModLocal) failed to checkout an application module due to the following exception:
oracle.jbo.DMLException: JBO-26066: Error during rollback.
at oracle.jbo.server.DefaultTxnHandlerImpl.handleRollback(DefaultTxnHandlerImpl.java:153)
at oracle.jbo.server.DBTransactionImpl.doRollback(DBTransactionImpl.java:3657)
at oracle.jbo.server.DBTransactionImpl.rollback(DBTransactionImpl.java:1826)
at oracle.jbo.server.ApplicationModuleImpl.resetState(ApplicationModuleImpl.java:3156)
at oracle.jbo.server.ApplicationModuleImpl.resetState(ApplicationModuleImpl.java:3145)
at oracle.jbo.server.DBTransactionImpl.disconnect(DBTransactionImpl.java:3971)
at oracle.jbo.server.DBTransactionImpl2.disconnect(DBTransactionImpl2.java:306)
at oracle.jbo.server.DBTransactionImpl.disconnect(DBTransactionImpl.java:4108)
at oracle.jbo.common.ampool.DefaultConnectionStrategy.disconnect(DefaultConnectionStrategy.java:328)
at oracle.jbo.common.ampool.ApplicationPoolImpl.disconnect(ApplicationPoolImpl.java:2979)
at oracle.jbo.common.ampool.ApplicationPoolImpl.recycleUnreferencedInstance(ApplicationPoolImpl.java:1586)
at oracle.jbo.common.ampool.ApplicationPoolImpl.doCheckout(ApplicationPoolImpl.java:1386)
at oracle.jbo.common.ampool.ApplicationPoolImpl.useApplicationModule(ApplicationPoolImpl.java:2062)
at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:398)
at oracle.jbo.http.HttpSessionCookieImpl.useApplicationModule(HttpSessionCookieImpl.java:230)
at oracle.jbo.html.jsp.datatags.ApplicationModuleTag.doStartTag(ApplicationModuleTag.java:193)
at jrun__itempage2ejspd._jspService(jrun__itempage2ejspd.java:61)
at jrun.jsp.runtime.HttpJSPServlet.service(HttpJSPServlet.java:43)
at jrun.jsp.JSPServlet.service(JSPServlet.java:110)
at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:91)
at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:226)
at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:527)
at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:198)
at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:451)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
## Detail 0 ##
java.sql.SQLException: This Connection has either timed out or been closed, and it has returned to its pool. You must re-acquire the Connection.
at jrun.sql.JRunConnectionHandle.assertConnectionExists(JRunConnectionHandle.java:50)
at jrun.sql.JRunConnectionHandle.rollback(JRunConnectionHandle.java:107)
at oracle.jbo.server.DefaultTxnHandlerImpl.handleRollback(DefaultTxnHandlerImpl.java:139)
at oracle.jbo.server.DBTransactionImpl.doRollback(DBTransactionImpl.java:3657)
at oracle.jbo.server.DBTransactionImpl.rollback(DBTransactionImpl.java:1826)
at oracle.jbo.server.ApplicationModuleImpl.resetState(ApplicationModuleImpl.java:3156)
at oracle.jbo.server.ApplicationModuleImpl.resetState(ApplicationModuleImpl.java:3145)
at oracle.jbo.server.DBTransactionImpl.disconnect(DBTransactionImpl.java:3971)
at oracle.jbo.server.DBTransactionImpl2.disconnect(DBTransactionImpl2.java:306)
at oracle.jbo.server.DBTransactionImpl.disconnect(DBTransactionImpl.java:4108)
at oracle.jbo.common.ampool.DefaultConnectionStrategy.disconnect(DefaultConnectionStrategy.java:328)
at oracle.jbo.common.ampool.ApplicationPoolImpl.disconnect(ApplicationPoolImpl.java:2979)
at oracle.jbo.common.ampool.ApplicationPoolImpl.recycleUnreferencedInstance(ApplicationPoolImpl.java:1586)
at oracle.jbo.common.ampool.ApplicationPoolImpl.doCheckout(ApplicationPoolImpl.java:1386)
at oracle.jbo.common.ampool.ApplicationPoolImpl.useApplicationModule(ApplicationPoolImpl.java:2062)
at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:398)
at oracle.jbo.http.HttpSessionCookieImpl.useApplicationModule(HttpSessionCookieImpl.java:230)
at oracle.jbo.html.jsp.datatags.ApplicationModuleTag.doStartTag(ApplicationModuleTag.java:193)
at jrun__itempage2ejspd._jspService(jrun__itempage2ejspd.java:61)
at jrun.jsp.runtime.HttpJSPServlet.service(HttpJSPServlet.java:43)
at jrun.jsp.JSPServlet.service(JSPServlet.java:110)
at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:91)
at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:226)
at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:527)
at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:198)
at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:451)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)