Help w/ TransactionAttributeType.REQUIRES_NEW
dabramov Jun 5, 2006 4:29 PMI have some test code that exercises REQUIRES_NEW, but looking at the TransactionManager logs, I don't see a new tx being created when that method executes. I'm using JBoss 4.0.4 GA and the EJB3 RC7 FD download.
The players are two SLSBs TxTestBean. I'm calling the toplevel() method from a simple jsp that just looks up the bean and makes the call.
Here's the code for TxTestBean:
@Stateless public class TxTestBean implements TxTestLocal { public static Logger log = Logger.getLogger( "TxTest" ); /* (non-Javadoc) * @see com.sonus.test.TxTestLocal#toplevel() */ public void toplevel() { log.info ("beginning toplevel test w/ ejb3"); part1(); part3(); log.info ("leaving toplevel test w/ ejb3"); } /* (non-Javadoc) * @see com.sonus.test.TxTestLocal#part1() */ public void part1() { try { log.info( "part 1: about to call list nodes"); Context context = ContextFactory.getLocalInitialContext(); NodeAccess nodeAccess = (NodeAccess) context.lookup( "NodeAccessBean/local" ); List nodes = nodeAccess.listNodes(); log.info( "part 1: list nodes done" ); part2(); } catch( Exception e ) { log.error ( "exception in part1: " + e); } } /* (non-Javadoc) * @see com.sonus.test.TxTestLocal#part2() */ public void part2() { try { log.info( "part 2: about to call list nodes"); Context context = ContextFactory.getLocalInitialContext(); NodeAccess nodeAccess = (NodeAccess) context.lookup( "NodeAccessBean/local" ); List nodes = nodeAccess.listNodes(); log.info( "part 2: list nodes done" ); } catch( Exception e ) { log.error ( "exception in part2: " + e); } } /* (non-Javadoc) * @see com.sonus.test.TxTestLocal#part3() */ @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) public void part3() { try { log.info( "part 3: about to call list nodes"); Context context = ContextFactory.getLocalInitialContext(); NodeAccess nodeAccess = (NodeAccess) context.lookup( "NodeAccessBean/local" ); List nodes = nodeAccess.listNodes(); log.info( "part 3: list nodes done" ); } catch( Exception e ) { log.error ( "exception in part3 :" + e); } } }
So I'd expect to see a log message indicating a new tx starting right before my log message "part 3: about to call list nodes" (which happens at time 2006-06-05 14:34:08,522).
Here's the log - I see only a single tx started and committed. I'm not sure how to proceed.
2006-06-05 14:34:08,459 TRACE [org.jboss.tm.TransactionImpl] Created new instance for tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=dabramovich/20, BranchQual=, localId=20] 2006-06-05 14:34:08,459 TRACE [org.jboss.tm.TxManager] began tx: TransactionImpl:XidImpl[FormatId=257, GlobalId=dabramovich/20, BranchQual=, localId=20] 2006-06-05 14:34:08,459 INFO [TxTest] beginning toplevel test w/ ejb3 2006-06-05 14:34:08,459 INFO [TxTest] part 1: about to call list nodes 2006-06-05 14:34:08,459 DEBUG [com.sonus.common.dao.node.NodeAccessBean] NodeDAO: listNodes(true) 2006-06-05 14:34:08,459 TRACE [org.jboss.tm.TransactionImpl] registerSynchronization(): Entered, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=dabramovich/20, BranchQual=, localId=20] status=STATUS_ACTIVE 2006-06-05 14:34:08,459 TRACE [org.jboss.tm.TransactionImpl] registerSynchronization(): Entered, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=dabramovich/20, BranchQual=, localId=20] status=STATUS_ACTIVE 2006-06-05 14:34:08,475 TRACE [org.jboss.tm.TransactionImpl] registerSynchronization(): Entered, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=dabramovich/20, BranchQual=, localId=20] status=STATUS_ACTIVE 2006-06-05 14:34:08,475 TRACE [org.jboss.tm.TransactionImpl] enlistResource(): Entered, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=dabramovich/20, BranchQual=, localId=20] status=STATUS_ACTIVE xaRes=org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource@720f6c 2006-06-05 14:34:08,475 TRACE [org.jboss.tm.TransactionImpl] startResource(XidImpl[FormatId=257, GlobalId=dabramovich/20, BranchQual=1, localId=20]) entered: org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource@720f6c flags=0 2006-06-05 14:34:08,475 TRACE [org.jboss.tm.TransactionImpl] startResource(XidImpl[FormatId=257, GlobalId=dabramovich/20, BranchQual=1, localId=20]) leaving: org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource@720f6c flags=0 2006-06-05 14:34:08,490 TRACE [org.jboss.tm.TxManager] tx timeout is now: 300s 2006-06-05 14:34:08,490 INFO [TxTest] part 1: list nodes done 2006-06-05 14:34:08,490 INFO [TxTest] part 2: about to call list nodes 2006-06-05 14:34:08,490 DEBUG [com.sonus.common.dao.node.NodeAccessBean] NodeDAO: listNodes(true) 2006-06-05 14:34:08,522 TRACE [org.jboss.tm.TxManager] tx timeout is now: 300s 2006-06-05 14:34:08,522 INFO [TxTest] part 2: list nodes done 2006-06-05 14:34:08,522 INFO [TxTest] part 3: about to call list nodes 2006-06-05 14:34:08,522 DEBUG [com.sonus.common.dao.node.NodeAccessBean] NodeDAO: listNodes(true) 2006-06-05 14:34:08,553 TRACE [org.jboss.tm.TxManager] tx timeout is now: 300s 2006-06-05 14:34:08,553 INFO [TxTest] part 3: list nodes done 2006-06-05 14:34:08,553 INFO [TxTest] leaving toplevel test w/ ejb3 2006-06-05 14:34:08,553 TRACE [org.jboss.tm.TransactionImpl] Committing, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=dabramovich/20, BranchQual=, localId=20], status=STATUS_ACTIVE 2006-06-05 14:34:08,553 TRACE [org.jboss.tm.TransactionImpl] calling sync 2, org.jboss.resource.connectionmanager.TransactionSynchronizer@fbb5f5 tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=dabramovich/20, BranchQual=, localId=20] 2006-06-05 14:34:08,553 TRACE [org.jboss.tm.TransactionImpl] Before completion done, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=dabramovich/20, BranchQual=, localId=20], status=STATUS_ACTIVE 2006-06-05 14:34:08,553 TRACE [org.jboss.tm.TransactionImpl] endresources(org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource@720f6c): state=1 2006-06-05 14:34:08,553 TRACE [org.jboss.tm.TransactionImpl] endResource(XidImpl[FormatId=257, GlobalId=dabramovich/20, BranchQual=1, localId=20]) entered: org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource@720f6c flag=67108864 2006-06-05 14:34:08,553 TRACE [org.jboss.tm.TransactionImpl] endResource(XidImpl[FormatId=257, GlobalId=dabramovich/20, BranchQual=1, localId=20]) leaving: org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource@720f6c flag=67108864 2006-06-05 14:34:08,553 TRACE [org.jboss.tm.TransactionImpl] One phase commit TransactionImpl:XidImpl[FormatId=257, GlobalId=dabramovich/20, BranchQual=, localId=20]: One resource. 2006-06-05 14:34:08,553 TRACE [org.jboss.tm.TransactionImpl] Committing resource org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource@720f6c state=3 2006-06-05 14:34:08,553 TRACE [org.jboss.tm.TransactionImpl] Committed OK, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=dabramovich/20, BranchQual=, localId=20] 2006-06-05 14:34:08,553 TRACE [org.jboss.tm.TxManager] commited tx: TransactionImpl:XidImpl[FormatId=257, GlobalId=dabramovich/20, BranchQual=, localId=20] 2006-06-05 14:34:08,553 TRACE [org.jboss.tm.TxManager] tx timeout is now: 300s