SCBCD Study Notes : Chapter 12 : Exceptions (Part 2)
Please find the Study Notes and resources which covers 2nd Part of Chapter 12 : Exceptions, as part of the Sun Certified Business Component Developer exam CX-310-090.
Identify correct and incorrect statements or examples about application exceptions and system exceptions in entity beans, session beans, and message-driven beans.
Chapter 12 : Exceptions
Identify correct and incorrect statements or examples about application exceptions and system exceptions in entity beans, session beans, and message-driven beans.
Table 12.1. Handling of exceptions thrown by a business method of a bean with container-managed transaction demarcation (CMT)
Method condition : Bean method runs in the context of the caller's transaction. This case may happen with Required, Mandatory, and Supports attributes.
|
Method exception
|
Container's action
|
Client's view
|
|
APPLICATION exception
|
re-throw APPLICATION exception
|
Receives APPLICATION exception. Can attempt to continue computation in the transaction, and eventually commit the transaction (the commit would fail if the instance called setRollbackOnly()).
|
|
SYSTEM exception
|
1. LOG the exception or error (to notify SYSTEM Administrator).
2. MARK the transaction for rollback.
3. DISCARD the instance.
4. Throw javax.transaction. TransactionRolledbackException to REMOTE client; throw javax.ejb. TransactionRolledbackLocalException to LOCAL client.
|
Receives javax.transaction. TransactionRolledbackException or javax.ejb. TransactionRolledbackLocalException Continuing transaction is fruitless.
|
Method condition : Bean method runs in the context of a transaction that the Container started immediately before dispatching the business method. This case may happen with Required and RequiresNew attributes.
: Bean method runs in the context of a transaction that the Container started immediately before dispatching the business method. This case may happen with Required and RequiresNew attributes.
|
Method exception
|
Container's action
|
Client's view
|
|
APPLICATION exception
|
If the instance called setRollbackOnly(), then rollback the transaction, and re-throw APPLICATION exception. Otherwise, attempt to COMMIT the transaction, and then re-throw APPLICATION exception.
|
Receives APPLICATION exception. If the client executes in a transaction, the client's transaction is NOT marked for rollback, and client can continue its work.
|
|
SYSTEM exception
|
1. LOG the exception or error (to notify SYSTEM Administrator).
2. ROLLBACK the container-started transaction.
3. DISCARD the instance.
4. Throw RemoteException to REMOTE client; throw EJBException to LOCAL client.
|
Receives RemoteException or EJBException. If the client executes in a transaction, the client's transaction MAY or MAY NOT be marked for rollback.
|
Method condition : Bean method runs with an UNSPECIFIED transaction context. This case may happen with the NotSupported, Never, and Supports attributes.
|
Method exception
|
Container's action
|
Client's view
|
|
APPLICATION exception
|
re-throw APPLICATION exception
|
Receives APPLICATION exception. If the client executes in a transaction, the client's transaction is NOT marked for rollback, and client can continue its work.
|
|
SYSTEM exception
|
1. LOG the exception or error (to notify SYSTEM Administrator).
2. DISCARD the instance.
3. Throw RemoteException to REMOTE client; throw EJBException to LOCAL client.
|
Receives RemoteException or EJBException. If the client executes in a transaction, the client's transaction MAY or MAY NOT be marked for rollback.
|
Table 12.2. Handling of exceptions thrown by a business method of a session with bean-managed transaction demarcation (BMT)
Bean method condition : Bean is STATEFUL or STATLESS Session.
|
Method exception
|
Container's action
|
Client's view
|
|
APPLICATION exception
|
re-throw APPLICATION exception
|
Receives APPLICATION exception.
|
|
SYSTEM exception
|
1. LOG the exception or error (to notify SYSTEM Administrator). 2. MARK for rollback a Transaction that has been started, but not yet completed, by the instance.
3. DISCARD the instance.
4. Throw RemoteException to REMOTE client; throw EJBException to LOCAL client.
|
Receives RemoteException or EJBException.
|
Table 12.3. Handling of exceptions thrown by a method of a message-driven bean (MDB) with container-managed transaction demarcation (CMT).
Method condition : Bean method runs in the context of a transaction that the Container started immediately before dispatching the method. This case happens with Required attribute.
|
Method exception
|
Container's action
|
|
SYSTEM exception
|
1. LOG the exception or error (to notify SYSTEM Administrator).
2. Rollback the container-started a transaction.
3. DISCARD the instance.
|
Method condition : Bean method runs with an UNSPECIFIED transaction context. This case happens with the NotSupported attribute.
|
Method exception
|
Container's action
|
|
SYSTEM exception
|
1. LOG the exception or error (to notify SYSTEM Administrator).
2. DISCARD the instance.
|
Table 12.4. Handling of exceptions thrown by a method of a message-driven bean (MDB) with bean-managed transaction demarcation (BMT).
Bean Method condition : Bean is message-driven bean (MDB)
|
Bean Method exception
|
Container's action
|
|
SYSTEM exception
|
1. LOG the exception or error (to notify SYSTEM Administrator).
2. MARK for rollback a transaction that has been started, but not yet completed, by the instance.
3. DISCARD the instance.
|
If exception happens in callback method (EntityBean.ejbActivate(), EntityBean.ejbLoad(), EntityBean.ejbPassivate(), EntityBean.ejbStore(), EntityBean.setEntityContext(EntityContext), EntityBean.unsetEntityContext(), SessionBean.ejbActivate(), SessionBean.ejbPassivate(), SessionBean.setSessionContext(SessionContext), MessageDrivenBean.setMessageDrivenContext(MessageDrivenContext), SessionSynchronization.afterBegin(), SessionSynchronization.beforeCompletion(), and SessionSynchronization.afterCompletion(boolean)) the Container must handle all exception as follows:
1. LOG the exception or error to bring the problem to the attention of the System Administrator.
2. If the instance is in a transaction, mark the transaction for ROLLBACK.
3. DISCARD the instance.
4. If the exception or error happened during the processing of a client invoked method, throw the java.rmi.RemoteException to the client if the client is a REMOTE client or throw the javax.ejb.EJBException to the client if the client is a LOCAL client. If the instance executed IN the client's transaction, the Container should throw the javax.transaction.TransactionRolledbackException to a REMOTE client or the javax.ejb.TransactionRolledbackLocalException to a LOCAL client, because it provides more information to the client. (The client knows that it is fruitless to continue the transaction.)
If a client makes a call to a SESSION object that has been REMOVED, the Container should throw the java.rmi.NoSuchObjectException (which is a subclass of java.rmi.RemoteException) to a REMOTE client

, or the javax.ejb.NoSuchObjectLocalException to a local client.

________________
Author: Mikalai Zaikin. Please Click Here to visit Authors site for any updates and changes to the study notes.
Trackback(0)
|