For Stateless bean with BMT:
If a bean method in tx neither commits nor rollbacks the tx and throws an Application Exception, what happens to tx and what exception client receives?
1.From one side App Exception doesn't automaticly causes tx to rollback, 2.from another side Stateless must to end the tx before returning from the method.
Spec says that App Exception is propagated to client always, but this is contradicting to side 2.
So what is the answer?
From the EJB specification, page 356:
If a stateless session bean instance starts a transaction in a business method, it must commit the transaction before the business method returns. The Container must detect the case in which a transaction was started, but not completed, in the business method, and handle it as follows:
Log this as an application error to alert the system administrator. Roll back the started transaction Discard the instance of the session bean Throw the java.rmi.RemoteException to the client if the client is a remote client, or throw the javax.ejb.EJBException if the client is a local client.
From this, I believe the Container would enforce rule 2.
[ September 23, 2003: Message edited by: Andrew Monkhouse ]