Developing a J2EE application to use ActivitySessions
This topic provides an overview of the high-level tasks for using
ActivitySessions in J2EE applications.
About this task
You should consider the following points before using ActivitySessions
in J2EE applications:
An application that is accessed under an ActivitySession context can receive
a javax.transaction.InvalidTransactionException RemoteException, thrown by
the EJB container when servicing any application method. This exception occurs
when an instance of an enterprise bean that has an ActivitySession-based activation
policy becomes involved with concurrent global and local transactions.
To enable an enterprise bean to participate in an ActivitySession context
and support ActivitySession-based operations, it must be configured with an
ActivationPolicy of ACTIVITY_SESSION. A bean configured with ActivationPolicy
of either TRANSACTION or ONCE cannot participate in an ActivitySession context.
A session bean can either use container-managed ActivitySessions or implement
bean-managed ActivitySessions; entity beans can only use container-managed
ActivitySessions. A bean is deployed to be bean-managed or container-managed
with respect to ActivitySession management by setting its transaction type
deployment attribute to be bean-managed or container-managed when deploying
the enterprise bean. A bean that uses bean-managed transactions can use bean-managed
ActivitySessions; a bean that uses container-managed transactions can use
container-managed ActivitySessions.
The following high level tasks illustrate how to use an ActivitySession
in a J2EE application:
Procedure
Develop a J2EE application that uses one or more enterprise beans
that are persisted to non-transactional datastores. Use
this task when you have an application that needs to coordinate multiple one-phase
resource managers. For example, for two or more entity EJBs whose persistence
is delegated to LocalTransaction resource adapters.
In this scenario, the
enterprise beans used by the application have an Activation policy of ActivitySession
and a local transaction containment policy with a boundary of ActivitySession
and resolution-control of ContainerAtBoundary. The synchronization of the
EJB state data is synchronized, by the container, with the one-phase resource
managers at ActivitySession completion and no application code is required
to be aware of ActivitySession support.
Develop a J2EE application in which an enterprise bean accesses
a resource manager multiple times in different business methods. Use
this task when you have an application that needs to extend a resource manager
local transaction (RMLT) over several business methods of an enterprise bean
instance.
In this scenario, the enterprise beans used by the application
have an Activation policy of ActivitySession and a local transaction containment
policy with a boundary of ActivitySession and resolution-control of Application.
The application logic starts and ends the RMLTs, for example using the javax.resource.cci.LocalTransaction
interface offered by a LocalTransaction Connector, but is not constrained
to start and commit the LocalTransaction in the same method.
Develop a J2EE client application to use an ActivitySession to
scope EJB activation and load-balancing. Use this task when you
have an application client that needs to access an entity bean instance several
times in the same client session, either without needing to run under a transaction
context, or with the need to run under a number of distinct and serially-executed
transactions.
In this scenario, the enterprise beans used by the application
client have an Activation policy of ActivitySession and a local transaction
containment policy appropriate to the function of the enterprise bean. The
J2EE client application can represent a period of user activity, for example
a signon period, during which a number of interactions occur with one or more
enterprise beans. If the J2EE client application begins an ActivitySession
and invokes the enterprise beans within the scope of the UOW represented by
the ActivitySession, then the enterprise bean instances are activated by the
container on the ActivitySession boundary and remain in the active state until
passivated by the container at the end of the ActivitySession. Workload affinity
management based on the ActivitySession is a platform quality of service.
Global transactions can begin and end within the ActivitySession, if they
are wholly encapsulated by the ActivitySession and run serially. EJB instances
activated at the ActivitySession boundary remain active across the serial
global transactions.
Develop a Web application client to participate in an ActivitySession
context. A web application that runs in the WebSphere Web container
can participate in an ActivitySession context. Web applications can use the
UserActivitySession interface to begin and end an ActivitySession context.
Also, the ActivitySession can be associated with an HttpSession, thereby extending
access to the ActivitySession over multiple HTTP invocations and supporting
EJB activation periods that can be determined by the lifecycle of the web
HTTP client.
The Web container manages ActivitySessions based on deployment
descriptor attributes associated with the Web application module.
Use IBM Suggests to retrieve related content from ibm.com and beyond, identified for your convenience.
This feature requires Internet access.
Most of the following links will take you to information that is not part of the formal product documentation and is provided "as is." Some of these links go to non-IBM Web sites and are provided for your convenience only and do not in any manner serve as an endorsement by IBM of those Web sites, the material thereon, or the owner thereof.
Last updated: Nov 25, 2008 2:35:59 AM CST http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.wsfep.multiplatform.doc/info/ae/ass/tasks/tas_scene.html