IBM SC34-6814-04 Server User Manual


 
If the routing program sets DYROPTER to 'Y', it is re-invoked on the target region:
1. When the routed method starts on the target region. That is, when the CICS
transaction specified on the REQUESTMODEL definition starts.
2.
v If the routed method is part of an OTS transaction, if the OTS transaction
ends successfully.
v If the method executes outside an OTS transaction, if the method itself ends
successfully.
That is, if the CICS transaction specified on the REQUESTMODEL definition
ends successfully.
3.
v If the routed method is part of an OTS transaction, if the OTS transaction
abends.
v If the method executes outside an OTS transaction, if the method itself
abends.
That is, if the CICS transaction specified on the REQUESTMODEL definition
abends.
Each time it is invoked on the target region, the routing program could update a
count of OTS transactions and “standalone” enterprise bean and CORBA stateless
object methods that are currently running on that region. When it is invoked for
routing, the routing program could use the counts maintained by all the regions in
the routing set (including itself) as input to its routing decision. This requires that
each region in the routing set has access to a common data set on which the
counts are recorded.
Dealing with a disabled CorbaServer
It is possible for a routed request to fail, on the target region, because the target
CorbaServer is disabled. (Perhaps maintenance is being applied to the
CorbaServer.) CICS indicates that this has happened by invoking the routing
program for transaction abend and returning an abend code of 'AIID' in the
DYRABCDE field of the communications area. Note that this invocation occurs on
the target region, and then only if the routing program has specified, on a previous
call on the routing region, that it should be reinvoked, on the target region, for
transaction initiation, termination, and abend.
How you handle a disabled CorbaServer may depend on whether or not the AORs
in your routing set contain multiple CorbaServers:
v If the AORs contain only a single CorbaServer, you must remove the AOR
containing the disabled CorbaServer from the routing set until the CorbaServer is
re-enabled.
v If the AORs contain multiple CorbaServers, you could code your routing program
so that the program does not remove the AOR from its routing set. It redirects
the failed request to a different AOR, but recognizes that the first AOR remains a
valid target for requests for objects supported by its other CorbaServers.
Note: If your AORs contain multiple CorbaServers you are strongly advised to
assign different sets of transaction IDs to the objects supported by each
CorbaServer. That is, each CorbaServer in an AOR should support a
different set of transaction IDs. This makes it easier to isolate methods
that run in a disabled CorbaServer from methods that run in other,
enabled, CorbaServers.
Chapter 18. Writing a distributed routing program 635