[jboss-user] [EJB 3.0] - Transaction annotation - cannot get desired behavior
lpmon
do-not-reply at jboss.com
Wed Apr 18 14:32:51 EDT 2007
JBoss 4.0.5 (em = injected entitymanger in text below)
Need a way to prevent an EntityExistsException from stopping processing (kills DB connection).
Root problem:
In a loop callimg em.persist(obj);
After an EntityExistsException is thrown I get the following trying to continue in the same method.
20:35:40,265 WARN [JDBCExceptionReporter] SQL Error: 0, SQLState: null
20:35:40,265 ERROR [JDBCExceptionReporter] Transaction is not active: tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=w2ksvr/10, BranchQual=, localId=10]; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=w2ksvr/10, BranchQual=, localId=10])
After some reading I found the transaction is marked for rollback due to the exception.
So I moved the persist call into a method that has
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
This does not seem to have any affect. In fact the inserts that are being done in each call to the method (with no exception) are not committed to the DB until to top method in the call stack exits. I though that the REQUIRES_NEW annotation should force the commit of the transaction at the end of the method that it applies to???????
My server call stack is:
session bean-1 calls
session bean-2 method that does DB work
It appears the commit does not occur until the session bean-1 method exits. Ideas? Have I understood how the annotation is supposed to work?
em calls from either bean report 'Cannot open connection' on subsequent em calls
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4038581#4038581
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4038581
More information about the jboss-user
mailing list