Re: setRollbackOnly()

Johan Eltes <[email protected]> Mon, 7 Nov 2005 01:08:53 +0100
Newsgroups gmane.comp.java.sun.ejb.general
Message-ID <[email protected]>
It depends on the context of the root exception. If the exception is
caused by a user error, or other condition that could be classified
as an application exception, I would go for option 1, in combination
with throwing an application exception (checked exception) as a
structured feedback to the client.

If the root exception is caused by an unexpected situation, like
inconsistent database content due to lacking validation logic in
other parts of the application, you should report a system exception,
i.e. go for option 2 (which discards the bean instance). In that
case, you could perfectly well just let the DataAccessException
(Spring runtime exception) go, without wrapping it in an ejb exception.

/Johan

7 nov 2005 kl. 00.34 skrev SUBSCRIBE EJB-INTEREST anonymous:

> Hi,
> I have a question.
> I have a stateless session bean.
> I want to rollback the transaction when an application exception
> occured.
> There are two options to do.Please let me know which one would be
> better.
> Option 1:
> try{
> //perform database operation}
> catch(DataAccessException ex){
> getSessionContext().setRollbackOnly()
> }
> Option 2:
> try{
> //perform database operation}
> catch(DataAccessException ex){
> throw new EJBException(ex);
> }
>
> ======================================================================
> =====
> To unsubscribe, send email to [email protected] and include in
> the body
> of the message "signoff EJB-INTEREST".  For general help, send
> email to
> [email protected] and include in the body of the message "help".
>

===========================================================================
To unsubscribe, send email to [email protected] and include in the body
of the message "signoff EJB-INTEREST".  For general help, send email to
[email protected] and include in the body of the message "help".