Home
The WebSphere MQ XA switch structure
Each resource manager participating in an externally coordinated unit of work must provide an XA switch structure. This structure defines both the capabilities of the resource manager and the functions that are to be called by the syncpoint coordinator.
WebSphere MQ provides two versions of this structure:
- MQRMIXASwitch for static XA resource management
- MQRMIXASwitchDynamic for dynamic XA resource management
Consult your transaction manager documentation to determine whether to use the static or dynamic resource management interface. Wherever a transaction manager supports it, we recommend that you use dynamic XA resource management.
Some 64-bit transaction managers treat the long type in the XA specification as 64-bit, and some treat it as 32-bit. WebSphere MQ supports both models:
- If your transaction manager is 32-bit, or your transaction manager is 64-bit but treats the long type as 32-bit, use the switch load file listed in Table 1.
- If your transaction manager is 64-bit and treats the long type as 64-bit, use the switch load file listed in Table 2.
A list of known 64-bit transaction managers that treat the long type as 64-bit is provided in Table 3. Consult your transaction manager documentation if you are unsure which model your transaction manager uses.
XA switch load file names Platform Switch load file name
(server)Switch load file name
(extended transactional client)Windows mqmxa.dll mqcxa.dll AIX (nonthreaded) libmqmxa.a libmqcxa.a AIX (threaded) libmqmxa_r.a libmqcxa_r.a HP-UX (nonthreaded) libmqmxa.so libmqcxa.so HP-UX (threaded) libmqmxa_r.so libmqcxa_r.so Linux (nonthreaded) libmqmxa.so libmqcxa.so Linux (threaded) libmqmxa_r.so libmqcxa_r.so Solaris libmqmxa.so libmqcxa.so
Alternative 64-bit XA switch load file names Platform Switch load file name
(server)Switch load file name
(extended transactional client)AIX (nonthreaded) libmqmxa64.a libmqcxa64.a AIX (threaded) libmqmxa64_r.a libmqcxa64_r.a HP-UX (nonthreaded) libmqmxa64.so libmqcxa64.so HP-UX (threaded) libmqmxa64_r.so libmqcxa64_r.so Linux (nonthreaded) libmqmxa64.so libmqcxa64.so Linux (threaded) libmqmxa64_r.so libmqcxa64_r.so Solaris libmqmxa64.so libmqcxa64.so
64-bit transaction managers that require the alternate 64-bit switch load file Transaction Manager Tuxedo Some external syncpoint coordinators (not CICS) require that each resource manager participating in a unit of work supplies its name in the name field of the XA switch structure. The WebSphere MQ resource manager name is MQSeries_XA_RMI.
The syncpoint coordinator defines how the WebSphere MQ XA switch structure links to it. Information about linking the WebSphere MQ XA switch structure with CICS is provided in Using CICS. For information about linking the WebSphere MQ XA switch structure with other XA-compliant syncpoint coordinators, consult the documentation supplied with those products.
The following considerations apply to using WebSphere MQ with all XA-compliant syncpoint coordinators:
- The xa_info structure passed on any xa_open call by the syncpoint coordinator includes the name of a WebSphere MQ queue manager. The name takes the same form as the queue-manager name passed to the MQCONN call. If the name passed on the xa_open call is blank, the default queue manager is used.
Alternatively, the xa_info structure can contain values for the TPM and AXLIB parameters. The TPM parameter specifies the transaction manager being used. The valid values are CICS, TUXEDO and ENCINA. The AXLIB parameter specifies the name of the library that contains the transaction manager's ax_reg and ax_unreg functions. For more information on these parameters, see the section about configuring extended transactional clients in WebSphere MQ Clients. If the xa_info structure contains either of these parameters, the queue manager name is specified in the QMNAME parameter, unless the default queue manager is being used.
- Only one queue manager at a time can participate in a transaction coordinated by an instance of an external syncpoint coordinator. The syncpoint coordinator is effectively connected to the queue manager, and is subject to the rule that only one connection at a time is supported.
- All applications that include calls to an external syncpoint coordinator can connect only to the queue manager that is participating in the transaction managed by the external coordinator (because they are already effectively connected to that queue manager). However, such applications must issue an MQCONN call to obtain a connection handle, and an MQDISC call before they exit.
- A queue manager with resource updates coordinated by an external syncpoint coordinator must start before the external syncpoint coordinator. Similarly, the syncpoint coordinator must end before the queue manager.
- If your external syncpoint coordinator terminates abnormally, stop and restart your queue manager before restarting the syncpoint coordinator to ensure that any messaging operations uncommitted at the time of the failure are properly resolved.
Parent topic:
External syncpoint coordination
fa13920_
Home