BEA Logo BEA WebLogic Enterprise Release 5.1

  Corporate Info  |  News  |  Solutions  |  Products  |  Partners  |  Services  |  Events  |  Download  |  How To Buy

 

   WebLogic Enterprise Doc Home   |   Transaction Topics   |   Previous Topic   |   Next Topic   |   Contents   |   Index

Transactions in EJB Applications

 

This topic includes the following sections:

This topic describes how to integrate transactions in Enterprise JavaBeans (EJBs) applications that run under BEA WebLogic Enterprise. Before you begin, you should read Introducing Transactions.

 


Before You Begin

Before you begin, you should read Introducing Transactions, particularly the following topics:

This document describes the BEA implementation of transactions in Enterprise JavaBeans. The information in this document supplements the Enterprise JavaBeans Specification 1.1, published by Sun Microsystems, Inc.

Note: Before proceeding with the rest of this chapter, you must be thoroughly familiar with the entire contents of the EJB Specification 1.1 document, particularly the concepts and material presented in Chapter 11, "Support for Transactions."

For general information about implementing Enterprise JavaBeans in WebLogic Enterprise applications, see "Developing WebLogic Enterprise EJB Applications" in Getting Started.

 


General Guidelines

The following general guidelines apply when implementing transactions in EJB applications for WebLogic Enterprise:

For general guidelines about the WebLogic Enterprise Transaction Service, see Capabilities and Limitations.

 


Transaction Attributes

This topic includes the following sections:

About Transaction Attributes for EJBs

Transaction attributes determine how transactions are managed in EJB applications. For each EJB, the transaction attribute specifies whether transactions are demarcated by the WebLogic Enterprise EJB container (container-managed transactions) or by the EJB itself (bean-managed transactions). The setting of the transaction-type element in the deployment descriptor determines whether an EJB is container-managed or bean-managed. See Chapter 16, "Deployment Descriptor," in the EJB Specification 1.1, for more information about the transaction-type element.

In general, the use of container-managed transactions is preferred over bean-managed transactions because application coding is simpler. For example, in container-managed transactions, transactions do not need to be started explicitly.

WebLogic Enterprise fully supports method-level transaction attributes as defined in Section 11.4.1 in the EJB Specification 1.1.

Transaction Attributes for Container-managed Transactions

For container-managed transactions, the transaction attribute is specified in the container-transaction element in the deployment descriptor. Container-managed transactions include all Entity beans and any stateful or stateless session beans with a transaction-type set to Container. For more information about these elements, see Chapter 16, "Deployment Descriptor," in the EJB Specification 1.1.

The Application Assembler can specify the following transaction attributes for EJBs and their business methods:

For a detailed explanation about how the WebLogic Enterprise EJB container responds to these trans-attribute settings, see section 11.6.2 in the EJB Specification 1.1.

For EJBs with container-managed transactions, the EJBs have no access to the javax.transaction.UserTransaction interface, and the entering and exiting transaction contexts must match. In addition, EJBs with container-managed transactions have limited support for the setRollbackOnly and getRollbackOnly methods of the javax.ejb.EJBContext interface, where invocations are restricted by rules specified in the EJB Specification 1.1.

Transaction Attributes for Bean-managed Transactions

For bean-managed transactions, the bean specifies transaction demarcations using methods in the javax.transaction.UserTransaction interface. Bean-managed transactions include any stateful or stateless session beans with a transaction-type set to Bean. Entity beans cannot use bean-managed transactions.

For stateless session beans, the entering and exiting transaction contexts must match. For stateful session beans, the entering and exiting transaction contexts may or may not match. If they do not match, the WebLogic Enterprise EJB container maintains associations between the bean and the nonterminated transaction.

Session beans with bean-managed transactions cannot use the setRollbackOnly and getRollbackOnly methods of the javax.ejb.EJBContext interface.

 


Participating in a Transaction

When the EJB Specification 1.1 uses the phrase "participating in a transaction," BEA interprets this to mean that the bean meets either of the following conditions:

 


Transaction Semantics

This topic contains the following sections:

The EJB Specification 1.1 describes semantics that govern transaction processing behavior based on the EJB type (entity bean, stateless session bean, or stateful session bean) and the transaction type (container-managed or bean-managed). These semantics describe the transaction context at the time a method is invoked and define whether the EJB can access methods in the javax.transaction.UserTransaction interface. EJB applications must be designed with these semantics in mind.

Transaction Semantics for Container-managed Transactions

For container-managed transactions, transaction semantics vary for each bean type.

Transaction Semantics for Stateful Session Beans

Table 5-1 describes the transaction semantics for stateful session beans in container-managed transactions.

Table 5-1 Transaction Semantics for Stateful Session Beans in Container-managed Transactions

Method

Transaction Context at the Time the Method Was Invoked

Can Access UserTransaction Methods?

Constructor

Unspecified

No

setSessionContext()

Unspecified

No

ejbCreate()

Unspecified

No

ejbRemove()

Unspecified

No

ejbActivate()

Unspecified

No

ejbPassivate()

Unspecified

No

Business method

Yes or No based on transaction attribute

No

afterBegin()

Yes

No

beforeCompletion()

Yes

No

afterCompletion()

No

No

Transaction Semantics for Stateless Session Beans

Table 5-2 describes the transaction semantics for stateless session beans in container-managed transactions.

Table 5-2 Transaction Semantics for Stateless Session Beans in Container-managed Transactions

Method

Transaction Context at the Time the Method Was Invoked

Can Access UserTransaction Methods?

Constructor

Unspecified

No

setSessionContext()

Unspecified

No

ejbCreate()

Unspecified

No

ejbRemove()

Unspecified

No

Business method

Yes or No based on transaction attribute

No

Transaction Semantics for Entity Beans

Table 5-3 describes the transaction semantics for entity beans in container-managed transactions.

Table 5-3 Transaction Semantics for Entity Beans in Container-managed Transactions

Method

Transaction Context at the Time the Method Was Invoked

Can Access UserTransaction Methods?

Constructor

Unspecified

No

setEntityContext()

Unspecified

No

unsetEntityContext()

Unspecified

No

ejbCreate()

Determined by transaction attribute of matching create

No

ejbPostCreate()

Determined by transaction attribute of matching create

No

ejbRemove()

Determined by transaction attribute of matching remove

No

ejbFind()

Determined by transaction attribute of matching find

No

ejbActivate()

Unspecified

No

ejbPassivate()

Unspecified

No

ejbLoad()

Determined by transaction attribute of business method that invoked ejbLoad()

No

ejbStore()

Determined by transaction attribute of business method that invoked ejbStore()

No

Business method

Yes or No based on transaction attribute

No

Transaction Semantics for Bean-managed Transactions

For bean-managed transactions, the transaction semantics differ between stateful and stateless session beans. For entity beans, transactions are never bean-managed.

Transaction Semantics for Stateful Session Beans

Table 5-4 describes the transaction semantics for stateful session beans in bean-managed transactions.

Table 5-4 Transaction Semantics for Stateful Session Beans in Bean-managed Transactions

Method

Transaction Context at the Time the Method Was Invoked

Can Access UserTransaction Methods?

Constructor

Unspecified

No

setSessionContext()

Unspecified

No

ejbCreate()

Unspecified

Yes

ejbRemove()

Unspecified

Yes

ejbActivate()

Unspecified

Yes

ejbPassivate()

Unspecified

Yes

Business method

Typically, no unless a previous method execution on the bean had completed while in a transaction context

Yes

afterBegin()

Not applicable

Not applicable

beforeCompletion()

Not applicable

Not applicable

afterCompletion()

Not applicable

Not applicable

Transaction Semantics for Stateless Session Beans

Table 5-5 describes the transaction semantics for stateless session beans in bean-managed transactions.

Table 5-5 Transaction Semantics for Stateless Session Beans in Bean-managed Transactions

Method

Transaction Context at the Time the Method Was Invoked

Can Access UserTransaction Methods?

Constructor

Unspecified

No

setSessionContext()

Unspecified

No

ejbCreate()

Unspecified

Yes

ejbRemove()

Unspecified

Yes

Business method

No

Yes

 


Session Synchronization

A stateful session bean using container-managed transactions can implement the javax.ejb.SessionSynchronization interface to provide transaction synchronization notifications. In addition, all methods on the stateful session bean must support one of the following transaction attributes: REQUIRES_NEW, MANDATORY or REQUIRED. For more information about the javax.ejb.SessionSynchronization interface, see Section 6.5.3 in the EJB Specification 1.1.

If a bean implements SessionSynchronization, the WebLogic Enterprise EJB container will typically make the following callbacks to the bean during transaction commit time:

 


Setting Transaction Timeouts

Bean providers can specify the timeout period for transactions in EJB applications. If the duration of a transaction exceeds the specified timeout setting, then the Transaction Service rolls back the transaction automatically.

Timeouts are specified according to the transaction type:

 


Handling Exceptions in EJB Transactions

WebLogic Enterprise EJB applications need to catch and handle specific exceptions thrown during transactions. For detailed information about handling exceptions, see Chapter 12, "Exception handling," in the EJB Specification 1.1 published by Sun Microsystems, Inc.

For more information about how exceptions are thrown by business methods in EJB transactions, see the following tables in Section 12.3: Table 8 (for container-managed transactions) and Table 9 (for bean-managed transactions).

For a client's view of exceptions, see Section 12.4, particularly Section 12.4.1 (application exceptions), Section 12.4.2 (java.rmi.RemoteException), Section 12.4.2.1 (javax.transaction.TransactionRolledBackException), and Section 12.4.2.2 (javax.transaction.TransactionRequiredException).