I have a long running transaction (timeout set to 2 hours). Before the end of this transaction, I need to use requiresNew to start another transaction to do some other work. I traced through the first transaction in the debugger and it stepped through (including the second transaction) without problems (within 15 mins). After the control goes back to Weblogic, the second transaction timed out (in 30 seconds as specified). What could be the problem? Here is some stack trace for the first transaction. It seems that the second transaction was blocked by the first transaction until it times out. It does a very simple row update and should not need 30 seconds.
at weblogic.transaction.internal.TransactionImpl.throwRollbackException(TransactionImpl.java:1809)
at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:331)
at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:227)
at weblogic.ejb.container.internal.BaseEJBObject.postInvoke1(BaseEJBObject.java:546)
at weblogic.ejb.container.internal.StatelessEJBObject.postInvoke1(StatelessEJBObject.java:72)
at weblogic.ejb.container.internal.BaseEJBObject.postInvokeTxRetry(BaseEJBObject.java:381)