on the local EJB/CORBA server,that issues a request for another bean. What
happens next depends on whether or not the target object belongs to the local
EJB/CORBA server:
vIf the request is for an object owned by the local EJB/CORBA server (that is, the
CORBASERVER name on the REQUESTMODEL definition is the name of the
local CorbaServer):
If the transaction attribute of the called method does not require the caller’s
unit of work to be suspended and resumed around the call, for optimization
reasons the called method executes on the local (requesting) region. The
distributed routing program is not invoked.
If the transaction attribute of the called method requires the caller’s unit of
work to be suspended and resumed around the call, the called method may
be routed to another region. For eligible requests, the distributed routing
program is invoked for route selection on the requesting region.
vIf the request is for an object owned by a remote EJB/CORBA server,CICS
passes the request to the remote server. For eligible requests, the distributed
routing program is invoked for route selection on the listener region of the remote
server.
Which requests can be dynamically routed?
Not all method requests for enterprise beans or CORBA stateless objects can be
routed dynamically.The distributed routing program is invoked for route selection
only when there is a “free choice” of target region. Requests for methods that are to
run under the same OTS transaction are always routed to the same AOR (even if
they are handled by different listener regions). Thus, the routing program is only
invoked for routing of method requests in two cases:
1. The method of the target object is to run under a new OTS transaction. (See
our definition of what constitutes a “new” OTS transaction, in the “Important
labeled box above.)
2. The method of the target object is to run under no OTS transaction.
Note:
1. A new OTS transaction may be started by:
vThe client
vThe container for the duration of the method
vThe target method—if the target is an instance of a session bean that
manages its own OTS transactions.
2. Whether the method of the target object is run under the client's (new or
existing) OTS transaction, under the target bean’s (new or existing) OTS
transaction, under a new OTS transaction created by the container for
the duration of the method, or under no OTS transaction, depends on a
combination of factors. For example:
vFor enterprise beans:
The setting of the target method’s transaction attribute
The type of bean—stateful session or stateless session
For stateful session beans, whether the target object has started an
OTS transaction during a previous method and, if so, whether it
has committed or rolled back the transaction.
vFor CORBA stateless objects:
Chapter18. Writing a distributed routing program 631