[jboss-user] [Beginners Corner] - set a rolled-back txn back to active

gan.gary do-not-reply at jboss.com
Wed Jul 23 19:55:09 EDT 2008


 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: 

anonymous wrote : 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>. )?

when i do this in between code: 

txReporting.rollback(); 
  | if(txReporting.wasRolledBack()) 
  |            System.out.printf("txReporting.wasRolledBack \n"); 
  | if(txReporting.isActive()) 
  |    System.out.printf("txReporting.isActive \n");     


It never show "txReporting.isActive" after txn.rolledback. But there's no option/method to set it to active? 

anyone?

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4166281#4166281

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4166281



More information about the jboss-user mailing list