wood burning stoves 2.0*
The moose likes EJB Certification (SCBCD/OCPJBCD) and the fly likes a mock question about transcation Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Certification » EJB Certification (SCBCD/OCPJBCD)
Bookmark "a mock question about transcation" Watch "a mock question about transcation" New topic
Author

a mock question about transcation

chao cai
Ranch Hand

Joined: May 26, 2005
Posts: 154
Which one of the following statements regarding the client view of exceptions received from an enterprise bean invocation is correct?



1. The client can safely continue the transaction by retrying the operation if an application exception is received.



2. The client can safely continue the transaction by retrying the operation if an application exception is received, but only after checking the transaction has not been marked for rollback.



3. The client can safely continue the transaction by retrying the operation if a non-application exception is received.



4. A local client cannot continue a transaction if javax.transaction.TransactionRolledbackLocalException is received.



5. A remote client cannot continue a transaction if javax.transaction.TransactionRolledbackException is received.

the answer is 5,why 4 is incorrect


SCEA<br />SCJP 1.2<br />SCBCD<br />MCSD<br />IBM Certified Specialist RUP v2003<br />IBM Certified Solution Designer OOAD vUML2<br /> <br />Phone Number:86-010-82776427
Jim Janssens
Ranch Hand

Joined: Sep 24, 2004
Posts: 210
javax.transaction.TransactionRolledbackLocalException does not exist.
It is javax.ejb.TransactionRolledbackLocalException

---

My question is; why is 1 not correct ?

If a bean throws an application exception, the transaction may be continued. Since application exceptions do not have impact on the transaction itself.

This is only true for statefull session beans and entit beans. Stateless and message driven beans must end the transaction before the method ends, so you cannot retry (a retry would mean a new transaction).

Could that be the reason why 1 is fault ?
chao cai
Ranch Hand

Joined: May 26, 2005
Posts: 154
Answers 1 and 2 are incorrect. It is potentially dangerous retrying to continue with a transaction after receiving an application exception because it is not always possible to determine the state of the enterprise bean. For example, if the container started a transaction just before invoking an enterprise bean with container-managed transaction and the enterprise bean throws an application exception and does not mark the transaction for rollback, the container commits the transaction before re-throwing the application exception to the client. In this scenario, it is not possible for the client to continue with the transaction on receiving the application exception.
Roger Chung-Wee
Ranch Hand

Joined: Sep 29, 2002
Posts: 1683
Here is an alternative scenario. A transaction begins in a CMT bean (A) which propagates into bean B. If an application exception is thrown in bean B, it will be received by bean A. Let us say that bean A handles the exception. At this point, nothing is committed and it would be quite safe for bean A to take corrective action in the same transaction. (This assumes that the Bean Provider has ensured that the instance of bean B is in a state such that an attempt by bean A to continue and/or commit the transaction does not result in loss of data integrity.)


SCJP 1.4, SCWCD 1.3, SCBCD 1.3
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
 
subject: a mock question about transcation
 
Similar Threads
Exception
Question from ejbcertificate.com on Exception
TrasactionRolledbackException
Qn about exceptions from ejbcertificate
client view of exceptions