Combining transaction and ActivitySession container policies

This topic provides details about the relationship between the deployment descriptor properties that determine how the container manages ActivitySession boundaries.

If an enterprise bean uses ActivitySessions, how the EJB container manages ActivitySession boundaries when delegating a method invocation depends on both the ActivitySession kind and Container transaction type deployment descriptor attributes configured for the enterprise bean. The following table lists the relationship between these two properties.

In each row, the final column describes the behavior that the EJB container takes with respect to global transaction and ActivitySession context, based on the following abbreviations:

Sn

An ActivitySession, where n indicates the ActivitySession instance.

Tn

A transaction, where n indicates the transaction instance.

In every case where the container does not start or leave a global transaction context associated with the thread, it starts (or obtains from the bean instance) a local transaction containment and associates that with the thread. The duration of the local transaction containment is determined by a combination of the local-transaction boundary descriptor (configured as part of the application deployment descriptor, and not shown in the following table) and the presence or not of an ActivitySession context, as described in ActivitySessions and transaction contexts.

The rows highlighted in bold are not allowed.

Table 1. Container behavior for activitysession and transaction policies deployment settings
Bean ActivitySession policy(ActivitySession kind) Bean transaction policy(Container transaction type) Received contexts Container behavior
Required Required None Start S1, Start T1
S1 Start T1
T1 Suspend T1, Start S1, Start T2
S1, T1 No Action
Requires new None Start S1, Start T1
S1 Start T1
T1 Suspend T1, Start S1, Start T2
S1, T1 Suspend T1, Start T2
Supports None Start S1
S1 No Action
T1 Suspend T1, Start S1
S1, T1 No Action
Not supported None Start S1
S1 No Action
T1 Suspend T1, Start S1
S1, T1 Suspend T1
Mandatory None Exception
S1 Exception
T1 Exception
S1, T1 No action
Never None Start S1
S1 No Action
T1 Suspend T1, Start S1
S1, T1 Exception
Requires new Required None Start S1 + T1
S1 Suspend S1, Start S2 + T1
T1 Suspend T1, Start S1 + T2
S1 + T1 Suspend S1 + T1, Start S2 + T2
Requires new None Start S1 + T1
S1 Suspend S1, Start S2 + T1
T1 Suspend T1, Start S1 + T2
S1 + T1 Suspend S1 + T1, Start S2 + T2
Supports None Start S1
S1 Suspend S1, Start S2
T1 Suspend T1, Start S1
S1, T1 Suspend S1 + T1, Start S2
Not supported None Start S1
S1 Suspend S1, Start S2
T1 Suspend T1, Start S1
S1, T1 Suspend S1 + T1, Start S2
Mandatory None Exception
S1 Exception
T1 Exception
S1, T1 Exception
Never None Start S1
S1 Suspend S1, Start S2
T1 Suspend T1, Start S1
S1, T1 Suspend S1 + T1, Start S2
Supports Required None Start T1
S1 Start T1
T1 No Action
S1, T1 No Action
Requires new None Start T1
S1 Start T1
T1 Suspend T1, Start T2
S1, T1 Suspend T1, Start T2
Supports None No Action
S1 No Action
T1 No Action
S1, T1 No Action
Not supported None No Action
S1 No Action
T1 Suspend T1
S1, T1 Suspend T1
Mandatory None Exception
S1 Exception
T1 No Action
S1, T1 No Action
Never None No Action
S1 No Action
T1 Exception
S1, T1 Exception
Not supported Required None Start T1
S1 Suspend S1, Start T1
T1 No Action
S1, T1 Suspend S1 + T1, Start T2
Requires new None Start T1
S1 Suspend S1, Start T1
T1 Suspend T1, Start T2
S1, T1 Suspend S1 + T1, Start T2
Supports None No Action
S1 Suspend S1
T1 No Action
S1, T1 Suspend S1 + T1
Not supported None No Action
S1 Suspend S1
T1 Suspend T1
S1, T1 Suspend S1 + T1
Mandatory None Exception
S1 Exception
T1 No Action
S1,T1 Exception
Never None No Action
S1 Suspend S1
T1 Exception
S1, T1 Suspend S1 + T1
Mandatory Required None Exception
S1 Start T1
T1 Exception
S1, T1 No Action
Requires new None Exception
S1 Start T1
T1 Exception
S1, T1 Suspend T1, Start T2
Supports None Exception
S1 No Action
T1 Exception
S1, T1 No Action
Not supported None Exception
S1 No Action
T1 Exception
S1, T1 Suspend T1
Mandatory None Exception
S1 Exception
T1 Exception
S1, T1 No Action
Never None Exception
S1 No Action
T1 Exception
S1,T1 Exception
Never Required None Start T1
S1 Exception
T1 No Action
S1, T1 Exception
Requires new None Start T1
S1 Exception
T1 Suspend T1, Start T2
S1,T1 Exception
Supports None No Action
S1 Exception
T1 No Action
S1,T1 Exception
Not supported None No Action
S1 Exception
T1 Suspend T1
S1,T1 Exception
Mandatory None Exception
S1 Exception
T1 No Action
S1,T1 Exception
Never None No Action
S1 Exception
T1 Exception
S1,T1 Exception
Bean managed Bean managed None No Action
S1 Suspend S1
T1 Suspend T1
S1, T1 Suspend S1 + T1


 

See Also


ActivitySessions and transaction contexts

 

Related Tasks


Configuring EJB module ActivitySession deployment attributes