Configuring the queue manager to coordinate JMS resources on Windows
Use IBM® MQ Explorer to configure the global (XA) resource managers for the queue manager.
About this task
Before you deploy a message flow in which the Transaction mode property is set to Global or Yes, and is intended to use XA coordinated transactions, modify the queue manager .ini file to include extra definitions for each JMS provider resource manager that participates in globally coordinated transactions.
To configure the queue manager for Windows:
- Open IBM MQ Explorer.
- Select the queue manager for your integration node and click Properties.
- Select XA resource managers in the left pane and click Add.
- Complete the fields to define a new resource manager:
- Name: Enter the name of the resource manager; for example, IIBWMQJMS.
- SwitchFile: Enter DynJMSSwitch.
- On XAOpenString, enter the following
values, which are comma delimited and positional. Represent
missing optional parameters by a comma if you include other
parameters later in the string.
- Initial Context Factory
- The Initial Context Factory identifier for the JMS provider; this value is required.
- Location of JNDI bindings
- Either the file path to the bindings file, or the LDAP directory
location of the JNDI administered objects that can be used
to create an initial context factory for the JMS connection.
If you supply the file path to the bindings file, do not
include the file name. See the JMSInput or JMSOutput node for further
details about creating the JNDI administered objects; this
value is required.
The values for the Initial Context factory and Location of JNDI bindings in the stanza must match the values that you specified in the JMS or SOAP nodes in the message flows.
- LDAP Principal
- Optional: The principal (user ID) that might be required when an LDAP database is used to hold the JNDI administered objects. LDAP Principal is not currently supported, it is reserved for future use.
- LDAP Credentials
- Optional: The credentials (password) that might be required if
a password protected LDAP database is used to hold the JNDI administered
All LDAP parameters must match the values that you specified on the mqsicreatebroker or mqsichangebroker command. LDAP Credentials is not currently supported, it is reserved for future use.
- Recovery Connection Factory Name
- Optional: The name of a Queue Connection Factory object in the
JNDI administered objects for recovery purposes, when the
non-default name is required.
The Recovery Factory Name must match a Queue Connection Factory name that is created in the JNDI administered objects. If you do not specify a name, a default factory that is called
recoverXAQCFis used. In either case, this value must refer to a JNDI administered object that has already been created.
- JMS Principal
- The user ID that is required to connect to a JMS provider, using a secure JMS Connection Factory. JMS Principal is not currently supported, it is reserved for future use.
- JMS Credentials
- The password that is required to connect to the same JMS provider
with the JMS principal. JMS Credentials is not currently
supported, it is reserved for future use.
The JMS Principal and JMS Credentials must be configured together.
- XACloseString: Leave this field blank.
- ThreadOfControl: Set the value to Thread.
- Click OK to complete the XA resource manager definition.
- Click OK to close the queue manager properties dialog.
- Click IBM MQ Explorer. to close
- Copy the DynJMSSwitch.dll file to the \exits64 folder in the IBM MQ installation directory.
- Copy the DynJMSSwitch32.dll file to the \exits directory in the IBM MQ installation directory and then rename the file to DynJMSSwitch.dll.
- Set the XAOpenString property
to a string value as follows:
Initial Context,location JNDI,Optional_parms.
- Set the ThreadOfControl property to Thread.
What to do next
- Check your configuration:
- In the message flow, ensure that the coordinated property is enabled by using the IBM Integration Bus Archive editor.
- Ensure that each node that must be part of the XA transaction is set to the global transaction mode.
- Ensure that the service ID that is used for the integration node and the queue manager is the same user ID.
- Ensure that the JNDI connection factory objects that the JMS nodes
use for a global transaction are configured to be of the type
MQXAConnectionFactory, MQXAQueueConnectionFactory, or MQXATopicConnectionFactory.
- If you create the bindings by using JMSAdmin, use the command DEF XAQCF or DEF XATCF, instead of DEF QCF or DEF TCF, when you define your connection factory.
- Authorize the integration node and queue manager to access shared resources that are associated with the JMS provider; see Windows systems: modifying the queue manager authorization.
MQ_DATA_PATH="C:\Program Files (x86)\IBM\WebSphere MQ"