I have this doubt about roll back transaction;
If I have a method in a bean (MDB or session) with CMT, If the method throws a system Exception the transaction is automaticaly rolled back. (Supose that the method have a transaction)
But what happend if I have that bean with BMT, If the method throws a system exception the transaction is rolled back automaticaly or I have to rolled back???
I'd say that it is a responsibility of a Bean Provider to make sure that the trnx is rolledback when the bean throws sys exception.
When using BMT all transaction management is up to the Bean Provider and the transaction rollback / commit is one of these responsibilities.
The Container catches a non-application exception; logs it (which can result in alerting the System
Administrator); and, unless the bean is a message-driven bean, throws the java.rmi.RemoteException
(or subclass thereof) to the client if the client is a remote client, or throws the
javax.ejb.EJBException (or subclass thereof) to the client if the client is a local client. The
Bean Provider can rely on the Container to perform the following tasks when catching a non-application
� The transaction in which the bean method participated will be rolled back.
� No other method will be invoked on an instance that threw a non-application exception.
This means that the Bean Provider does not have to perform any cleanup actions before throwing a
non-application exception. It is the Container that is responsible for the cleanup.
[ July 01, 2004: Message edited by: mini mehta ]
Sorry Carlos, my guess was wrong. Mini's post proved that the Bean Provider does not have to rollback the transaction in BMT beans when system exception is thrown. It makes Bean Provider's life just a little bit easier
[ July 01, 2004: Message edited by: Alex Sharkoff ]