Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
4.0
-
None
-
None
Description
If you have code like this in a bean-managed tx ejb:
ut.begin();
throw new RuntimeException("unexpected error");
ut.commit();
then code like this, present in all the containers, will suppress the runtime exception in favor of an uninformative message that you failed to end the transaction:
(from SingletonInstanceManager)
try{ //Call the chain interceptorStack.invoke(); } catch(Throwable e) { //RollBack Transaction EjbTransactionUtil.handleSystemException(transactionPolicy, e, callContext); } finally{ EjbTransactionUtil.afterInvoke(transactionPolicy, callContext); // this throws the uninformative exception }
Just about every use of EjbTransactionUtil.afterInvoke suffers from this problem.