

Table B-3 and Table B-4 summarize the operations that are legal for a stateless session bean.
| 
 Allowed Operations  | 
||
|---|---|---|
| 
 Method  | 
 Container-Managed Transactions  | 
 Bean-Managed Transactions  | 
| 
 setSessionContext()  | 
 EntityContext methods: 
 JNDI ENC contexts: 
  | 
 EntityContext methods: 
 JNDI ENC contexts: 
  | 
| 
 ejbCreate() ejbRemove()  | 
 EntityContext methods: 
 JNDI ENC contexts: 
  | 
 EntityContext methods: 
 JNDI ENC contexts: 
  | 
| 
 business methods  | 
 EntityContext methods: 
 JNDI ENC contexts: 
  | 
 EntityContext methods: 
 JNDI ENC contexts: 
  | 
| 
 ejbActivate() ejbPassivate()  | 
 Not Supported (stateless beans do not use these methods)  | 
 Not Supported (stateless beans do not use these methods)  | 
| 
 
  | 
 Allowed Operations  | 
|
|---|---|---|
| 
 Method  | 
 Container-Managed Transactions  | 
 Bean-Managed Transactions  | 
| 
 setSessionContext()  | 
 EntityContext methods: 
  | 
 EntityContext methods: 
  | 
| 
 ejbCreate() ejbRemove()  | 
 EntityContext methods: 
  | 
 EntityContext methods: 
  | 
| 
 business methods  | 
 EntityContext methods: 
  | 
 EntityContext methods: 
  | 
| 
 ejbActivate() ejbPassivate()  | 
 Not Supported (stateless beans do not use these methods)  | 
 Not Supported (stateless beans do not use these methods)  | 







Table B-5 and Table B-6 summarize the operations that are legal for a stateful session bean in EJB 1.1 and 1.0.
| 
 
  | 
 Allowed Operations  | 
|
|---|---|---|
| 
 Method  | 
 Container-Managed Transactions  | 
 Bean-Managed Transactions  | 
| 
 setSessionContext()  | 
 EntityContext methods: 
 JNDI ENC contexts: 
  | 
 EntityContext methods: 
 JNDI ENC contexts: 
  | 
| 
 ejbCreate() ejbRemove() ejbActivate() ejbPassivate()  | 
 EntityContext methods: 
 JNDI ENC contexts: 
  | 
 EntityContext methods: 
 JNDI ENC contexts: 
  | 
| 
 business methods  | 
 EntityContext methods: 
 JNDI ENC contexts: 
  | 
 EntityContext methods: 
 JNDI ENC contexts: 
  | 
| 
 afterBegin() beforeCompetion()  | 
 EntityContext methods: 
 JNDI ENC contexts: 
  | 
 Not Supported (bean-managed transaction beans can not implement the SessionSynchronization interface)  | 
| 
 afterCompletion()  | 
 EntityContext methods: 
 JNDI ENC contexts: 
  | 
 Not Supported (bean-managed transaction beans can not implement the SessionSynchronization interface)  | 
Table B-7 summarizes what happens to a transaction if an exception is thrown while the transaction is in process.
| 
 Transaction Scope  | 
 Transactional Type Attributes  | 
 Exception Thrown  | 
 Container's Action  | 
 Client's View  | 
|---|---|---|---|---|
| 
 Client Initiated Transaction 
 Transaction is started by the client (application or bean) and is propagated to the bean method.  | 
 transaction-type = 
 transaction-attribute = 
  | 
 Application Exception  | 
 If the bean invoked EJBContext.setRollbackOnly(), then mark the client's transaction for rollback. Rethrow Application Exception.  | 
 Receives the Application Exception. The client's transaction may or may not have been marked for rolled back.  | 
| 
 
  | 
 
  | 
 System Exception  | 
 Mark the client's transaction for roll back. Log the error. Discard the instance. Rethrow TransactionRollbackException.  | 
 Receives the TransactionRollbackException The client's transaction has been rolled back.  | 
| 
 Container Initiated Transaction 
 The transaction started when the bean's method was invoked and will end when method completes.  | 
 transaction-type = 
 transaction-attribute = 
  | 
 Application Exception  | 
 If bean called EJBContext.setRollbackOnly(), then rollback the transaction and rethrow the Application Exception. If bean didn't explicitly rollback the transaction, then attempt to commit the transaction and rethrow the Application Exception.  | 
 Receives the Application Exception. The bean's transaction may or may not have been rolled back. The client's transaction is not affected.  | 
| 
 
  | 
 
  | 
 System Exception  | 
 Roll back the transaction. Log the error. Discard the instance. Rethrow RemoteException.  | 
 Receives the RemoteException. The bean's transaction was rolled back. The client's transaction is not affected.  | 
| 
 Bean is not part of a transaction The bean was invoked but does not propagate the client's transaction and does not start its own transaction.  | 
 transaction-type = 
 transaction-attribute = 
  | 
 Application Exception  | 
 Rethrow Application Exception  | 
 Receives the Application Exception. The client's transaction is not affected.  | 
| 
 
  | 
 
  | 
 System Exception  | 
 Log the error. Discard the instance. Rethrow RemoteException.  | 
 Receives the RemoteException. The client's transaction is not affected.  | 
| 
 Bean Managed Transaction. 
 The stateful or stateless session bean use the EJBContext to explicitly manage its own transaction.  | 
 transaction-type = 
 transaction-attribute = 
  | 
 Application Exception  | 
 Rethrow the Application Exception.  | 
 Receive the Application Exception. The client's transaction is not affected.  | 
| 
 
  | 
 
  | 
 System Exception  | 
 Roll back the transaction. Log the error. Discard the instance.  | 
 Receives the RemoteException.  | 

Copyright © 2001 O'Reilly & Associates. All rights reserved.