• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

transaction rollback

 
Carlos Llona
Greenhorn
Posts: 15
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello:

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???

Chauuu!!
 
Alex Sharkoff
Ranch Hand
Posts: 209
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Carlos,

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.


 
Carlos Llona
Greenhorn
Posts: 15
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
thanks alex.

but, I think that this is a bad tecnique/practice because I would cach all exception (java.lang.Exception) in my method to rolledback the transaction, and every one knows that this is a very bad practice.

What do you think about that?
 
mini mehta
Ranch Hand
Posts: 120
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
According to the spec page 374

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
exception:
� 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 ]
 
Alex Sharkoff
Ranch Hand
Posts: 209
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Mini.

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 ]
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic