You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by Martin Uhlir <st...@gmail.com> on 2008/06/22 20:17:13 UTC

Result of EJB transaction in clent

hi,

i'm new to ejb so sorry for my simple question, but i could not find the 
answer anywhere. i have a web app using openejb. in a client i call a 
business mothod of an ejb bean and the question is how i can get to know 
in the client if the business method was commited or rolled back?? i 
need to know this to be able to decide which page should be returned to 
the user.

thx for help in advance.

Re: Result of EJB transaction in clent

Posted by David Blevins <da...@visi.com>.
On Jun 22, 2008, at 11:17 AM, Martin Uhlir wrote:

> hi,
>
> i'm new to ejb so sorry for my simple question, but i could not find  
> the answer anywhere. i have a web app using openejb. in a client i  
> call a business mothod of an ejb bean and the question is how i can  
> get to know in the client if the business method was commited or  
> rolled back?? i need to know this to be able to decide which page  
> should be returned to the user.

For container managed transactions (the default) you can assume the  
transaction was committed if no exception was thrown to the client  
(either by the bean or the container).

If an exception was received by the client it still may be possible  
that the transaction was still committed.  The bean can throw "App  
Exceptions" which the container will treat as a normal return type  
will not cause the container to rollback the transaction.  The basic  
policy is throwing a checked exception (i.e. it's declared in your  
throws clause) from the bean method does not cause the container to  
rollback the transaction, throwing an unchecked exception (i.e. a  
RuntimeException or subclass) from the bean method does cause the  
container to rollback the transaction.  A minor note, it is possible  
to throw unchecked exceptions and have them not rollback the  
transaction by annotating them with @ApplicationException, though most  
people don't use that feature.

-David