reuse same transaction hit error in JBoss
gan.gary Jul 23, 2008 6:10 AMI have Java/HIbernate apps. When run in Eclipse/JAR file with this, it works fine.
public void saveToDatabase() throws Exception { Transaction txReporting = null; try{ txReporting = sesReporting.beginTransaction(); ... txReporting.commit(); } catch (Exception e) { if (txReporting != null) { // Something went wrong; discard all partial changes txReporting.rollback(); // nested try-catch loop to catch all errors try{ // for logging purpose txReporting = sesReporting.beginTransaction(); ... txReporting.commit(); } catch (Exception ex) { throw ex; } } throw e; } }
But when I throw this into JBoss, I hit:
2008-07-23 17:46:04,291 DEBUG [org.hibernate.util.JDBCExceptionReporter] Cannot open connection [???]
org.jboss.util.NestedSQLException: Transaction is not active: tx=TransactionImple < ac, BasicAction: acc550a:c94:4886fda0:41 status: ActionStatus.ABORT_ONLY >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: acc550a:c94:4886fda0:41 status: ActionStatus.ABORT_ONLY >)
...
Caused by: javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: acc550a:c94:4886fda0:41 status: ActionStatus.ABORT_ONLY >
at org.jboss.resource.connectionmanager.TxConnectionManager.getManagedConnection(TxConnectionManager.java:304)
at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:396)
at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:842)
at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:88)
... 53 more
2008-07-23 17:46:04,307 WARN [org.hibernate.util.JDBCExceptionReporter] SQL Error: 0, SQLState: null
2008-07-23 17:46:04,307 ERROR [org.hibernate.util.JDBCExceptionReporter] Transaction is not active: tx=TransactionImple < ac, BasicAction: acc550a:c94:4886fda0:41 status: ActionStatus.ABORT_ONLY >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: acc550a:c94:4886fda0:41 status: ActionStatus.ABORT_ONLY >)
2008-07-23 17:46:04,307 ERROR [STDERR] org.hibernate.exception.GenericJDBCException: Cannot open connection
anyone?
is this called "multiple one-phase" : http://wiki.jboss.org/wiki/Multiple1PC ?
I thought using 2 separate transactions is required MSDTC (change <local-tx-datasource> to <xa-datasource>. )?