To include nodes that use JMS transport,
such as the JMS and SOAP nodes, in globally coordinated transactions,
you must complete additional configuration.
Before you begin
Review Configuring JMS and SOAP nodes for local transactions to understand what
properties you must set on a SOAP or JMS node to use globally coordinated
transactions.Note: Global (XA) transaction coordination for nodes
that use JMS transport is supported only if the message flow that
contains the nodes is deployed to an integration node that has a dedicated
queue manager; the integration node cannot share a queue manager with
other integration nodes.
About this task
If you require global transaction coordination, choose
a JMS provider that conforms to the Java™ Message
Service Specification version 1.1 or 2.0, and
that supports the JMS XAResource API through the JMS session.
If you specify your own JMS provider using the JMSProviders
configurable service, set the jmsProviderXASupport attribute
to true to indicate that the selected JMS provider supports XA coordinated
transactions. If you set this property to true, and the selected JMS
provider does not support XA transactions, an exception is raised.
If you set this property to false, but the Transaction mode property on the
node is set to Yes and
the Coordinated Transaction message
flow property is selected, an exception is raised.
If the message
designer specified a non-XA-compliant provider, only the non-transactional
mode is supported. In this case, you must set the Transaction mode property
to None for all JMS and SOAP nodes that use JMS transport.
On
distributed systems, a WebSphere® MQ queue
manager provides the coordinated transaction support, which means
that IBM® Integration Bus must have access to WebSphere MQ when it is processing the messages
in the flow. For more information about using WebSphere MQ with IBM Integration Bus, see Installing WebSphere MQ.
On z/OS®, the external transaction
manager is Resource Recovery Services (RRS).
To configure the
nodes:
Procedure
- In the IBM Integration Toolkit, switch
to the Integration Development
perspective.
- In the BAR file properties, set the Coordinated
Transaction message flow property value to yes.
- In the Message Flow editor, set
the Transaction mode property
to Yes for each
node that uses JMS transport that is required in the XA coordinated transaction.
- Create a Queue Connection Factory, and use either the default
name, recoverXAQCF, or supply your own name.
- There are two modes for enlisting an XAResource
with the transaction coordinator:
- Static enlistment, which means that the XAResource is called to
perform a start transaction when any message flow in the same Integration
Bus starts a global coordinated transaction.
- Dynamic enlistment where the JMS node registers an interest in
joining a global transaction when it has work to perform.
Before deployment on distributed systems, you must set up
a stanza for each JMS provider that you want to use. For Windows, the JMS provider switch file is
called DynJMSSwitch.dll. For all other operating
systems, the JMS provider switch file is called libDynJMSSwitch.so.
Follow
the steps in the appropriate topic for the operating system, or systems,
that your enterprise uses:
Note: From IBM Integration Bus Version 9.0.0.6, JMS XA registration
is performed using the dynamic XA call sequence using switch files
containing the identified "Dyn" for example DynJMSSwitch.dll.
In order to provide compatibility with existing installations, switch
files with the previous names have been provided but these are copies
of the dynamic registration switch file. The version of the switch
file used by the QueueManager must match the version being used by
the integration node. The use of mismatched switch files is not supported
and is likely to cause mixed results when processing XA JMS transactions.
What to do next
The JMS provider might supply additional JAR files that are
required for transactional support; for more information; see the
documentation that is supplied with the JMS provider. For example,
on distributed systems, the WebSphere MQ JMS
provider supplies an extra JAR file, com.ibm.mqetclient.jar
.You
must add any additional JAR files to the integration node shared_classes
directory:
- On Linux and UNIX: var/mqsi/shared-classes.
- On Windows, C:\ProgramData\IBM\MQSI\shared-classes.
For more information, see the section about making the JMS
provider client available to the JMS nodes in JMSInput node.