By using Work Managers the IFS Connect framework can achieve
thread isolation when executing native code within Connector Senders and
Readers, but also when calling BizAPIs or other operations within Service
Handlers. Furthermore Work Managers can be used for better control of
Message Driven Beans (MDBs) behavior used by the IFS Connect
framework.
IFS Connect framework is using Work Manager API, from the
commonj.work
Java package, to run native code in Connector Senders
and Readers, but also BizAPIs and service handler operations, in a
separate thread. Work Managers and the associated threads are controlled by the
Middleware Server. With this concept it is possible to run a particular piece of
code in another thread while the caller is waiting for the thread execution to
be finished. It is also possible to define a maximum amount of time (work
timeout) the caller is supposed to wait for the thread to finish. If the code
executed in another thread takes too long time, for example because of it is
hanging on external resource, the caller can abandon the called code in the
other thread and continue with the flow. The other thread may finish its
execution later on or may be hanging, but the result will not be delivered to
the caller in such situation and the actual Application or Reader
Message will be marked as failed.
Work timeouts can be specified in Setup IFS Connect window located in Solution Manager / Integration / IFS Connect
You can specify the work timeout for each instance of Connector Sender or
Reader in Setup IFS Connect window. On each sender or reader instance you'll
find a parameter with name WORK_TIMEOUT that is accepting an integer value
representing work timeout in seconds. If not specified the
default value is
taken.
In Setup IFS Connect window, Servers, configuration of
J2EE_SERVER instance
you will find a grid allowing you to enter work timeouts for BizAPIs, Service
handler operations and PL/SQL methods:
Here you can enter a BizAPI name or operation/method name in the left column and
define work timeout in seconds in the right column. A list of available BizAPIs
is presented as a drop down list, but to enter an operation name not connected
to a BizAPI you have to enter the handler name and operation name on form
HandlerName:OperationName
. When entering PL/SQL method name use form
Package.Method
. On save the entered data is validated against
the system and if a BizAPI or operation is not found the warning will be
displayed, but the data will be saved anyway. The PL/SQL method name is not
validated. A syntactic incorrect name will however generate an error.
Note however that both validation and population of the drop down list with BizAPIs are done by connecting to the Integration cluster, which may not be reachable of different reasons when configuring timeouts.
If work timeout for a particular BizAPI, operation or PL/SQL method is not specified the default value will be taken then.
Read more about how to work with grid parameters.
If work timeout for a particular instance is not specified the default value
will be taken. The default work timeout can also be defined in the Setup IFS
Connect window, Servers, configuration of J2EE_SERVER instance. Here you will
find an integer parameter with name DEFAULT_WORK_TIMEOUT that will allow you to
specify the default timeout in seconds:
All Message Driven Beans used by the IFS Connect framework (see also Batch Processor) have corresponding Work Managers defined in the Middleware Server. By default only some of them have additional constraints defined, but it is possible to add/modify constraints to all Work Manages, if necessary.
For best performance, low latency and good throughput, all Message Driven Beans and Connect Senders involved in processing of outbound synchronous message have their Work Managers defined with additional constraints (Forwarder MDB, Invoke MDB, Connect Sender Invoke; both Main and Integration cluster).
The defined constraints are:
Fair Share Request Class
with value of 100 will guarantee
the high priority of the invoke request.Minimum Thread Constraint
(Forwarder 3, others 16)
allocates a pre-defined number of threads exclusively for the actual Work
Manager for the lowest possible latency. Normally the value for
Invoke MDB and Connect Sender should be the same and correspond
to the number of concurrent requests.Maximum Thread Constraint
(Forwarder 16, others 64)
limits the maximum number of threads that the actual Work Manager may
request. Default is 16 if the constraint is not set.The default values should be sufficient in the most of cases, but if necessary can be changed to values more suitable for the actual installation. It is possible to enable statistics and with help from R&D organization find out the proper values of the constraints.