>I have a container managed session bean which calls DAO, and I was wondering 
>why we have to setRollBackOnly once we catch
>the exception and then throw EJBException.

This is what I read from specs 2.1 relevant to your question. It explains why 
you need to call setRollBackOnly.

" When a client executing in a transaction context receives a RemoteException 
or an EJBException
from an enterprise bean invocation, the client may use either of the following 
strategies to deal
with the exception:
* Discontinue the transaction. If the client is the transaction originator, it 
may simply rollback its
transaction. If the client is not the transaction originator, it can mark the 
transaction for rollback
or perform an action that will cause a rollback. For example, if the client is 
an enterprise
bean, the enterprise bean may throw a RuntimeException which will cause the 
container
to rollback the transaction.
* Continue the transaction. The client may perform additional operations on the 
same or other
enterprise beans, and eventually attempt to commit the transaction. If the 
transaction was
marked for rollback at the time the RemoteException or EJBException was thrown 
to
the client, the commit will fail."

>Can I just do setRollBackOnly and not throw EJBException? Will it still roll 
>back the transaction? Or it won't happen until
>the container catches EJBException.
No, Client , or container will get the indication only if you throw appropriate 
exceptions.

Thank you very much for any help.

/Ashwani


-----Original Message-----
From: A mailing list for Enterprise JavaBeans development [mailto:[EMAIL 
PROTECTED] Behalf Of Lee, Howard
Sent: Saturday, March 19, 2005 3:40 AM
To: EJB-INTEREST@JAVA.SUN.COM
Subject: EJBException and setRollBackOnly


Hi,
I have a container managed session bean which calls DAO, and I was wondering 
why we have to setRollBackOnly once we catch the exception and then throw 
EJBException. Can I just do setRollBackOnly and not throw EJBException? Will it 
still roll back the transaction? Or it won't happen until the container catches 
EJBException. Thank you very much for any help.


**********************************************************************
E-mail sent through the Internet is not secure. Western Asset therefore 
recommends that you do not send any confidential or sensitive information to us 
via electronic mail, including social security numbers, account numbers, or 
personal identification numbers. Delivery, and or timely delivery of Internet 
mail is not guaranteed. Western Asset therefore recommends that you do not send 
time sensitive or action-oriented messages to us via electronic mail.
**********************************************************************
=========================================================================== 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".

This message contains information that may be privileged or confidential and is 
the property of the Capgemini Group. It is intended only for the person to whom 
it is addressed. If you are not the intended recipient,  you are not authorized 
to read, print, retain, copy, disseminate,  distribute, or use this message or 
any part thereof. If you receive this  message in error, please notify the 
sender immediately and delete all  copies of this message.

===========================================================================
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".

Reply via email to