I am facing a problem with using SessionContext's setRollbackOnly method. I am having 3 EJB's(Suppose A,B,C) in which A calls a method in B and this method calls a method in C. I perform a database operation, where it waits for a lock and finally database transaction times out and finally the exception is passed back to A. And finally in A, i call the setRollbackOnly method, where it throws the java.lang.IllegalStateException saying 'Cannot mark the transaction for rollback'.
All the three beans are container managed and i have a transaction attribute 'Required' set in the descriptor file.
When the transaction times out, there is nothing to rollback. Usually, 30 seconds is plenty of time for a transaction to complete (this is the default transaction timeout for some EJB servers). If it taking longer, you need to find out why.
SCJP 1.4, SCWCD 1.3, SCBCD 1.3
Joined: Apr 03, 2008
The problem is solved but I have this EJB as a webservice which and when the Transaction is Timed out in the EJB, the same exception is being thrown at the soap client as response.