Configuring JMS and SOAP nodes to support globally coordinated transactions

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

  1. In the IBM Integration Toolkit, switch to the Integration Development perspective.
  2. In the BAR file properties, set the Coordinated Transaction message flow property value to yes.
  3. 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.
  4. Create a Queue Connection Factory, and use either the default name, recoverXAQCF, or supply your own name.
    For more information about creating JNDI administered objects, see JNDI administered objects.
  5. There are two modes for enlisting an XAResource with the transaction coordinator:
    1. 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.
    2. 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:

    • Linux platformUNIX platformLinux® and UNIX systems
    • Windows platformWindows systems

      On Windows only, you must also modify the queue manager authorization, as described in Windows systems: modifying the queue manager authorization.

    • z/OS platformOn z/OS, the only JMS provider that is supported is the IBM WebSphere MQ Java Client, and the only transport mode that is supported for that client is BIND mode; no further configuration steps are required. Sync point control for the JMS provider is managed with RRS sync point coordination of the queue manager of the integration node.

    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:

  • Linux platformUNIX platformOn Linux and UNIX: var/mqsi/shared-classes.
  • Windows platformOn 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.