IBM MQ resource adapter statement of support

The resource adapter that comes with IBM® MQ 8.0 or later implements the JMS 2.0 specification. It can be deployed only into an application server that is Java Platform, Enterprise Edition 7 (Java EE 7) compliant and therefore supports JMS 2.0.

A list of certified application servers is maintained on Oracle's web site.

Deployment within WebSphere Application Server Liberty

WebSphere® Liberty 8.5.5 Fix Pack 6 and later, and WebSphere Application Server Liberty 9.0 and later are Java EE 7 certified application servers so the IBM MQ 8.0 or later resource adapter can be deployed into them.

WebSphere Application Server Liberty has available the wmqJmsClient-1.1 feature to allow working with JMS 1.1 resource adapters and the wmqJmsClient-2.0 feature to allow working with JMS 2.0 resource adapters. The IBM MQ 8.0 or later resource adapter must be deployed with the wmqJmsClient-2.0 feature.

Information on this configuration is in the Scenario Connecting WebSphere Application Server Liberty profile to IBM MQ.

Deployment within WebSphere Application Server traditional

WebSphere Application Server traditional 9.0 is supplied with an IBM MQ 9.0 resource adapter already installed. The resource adapter can connect to any queue managers that are running on a supported version of IBM MQ or IBM WebSphere MQ. For more information, see Connectivity to IBM MQ 8.0 and 9.0 queue managers.

The IBM MQ 9.0 resource adapter cannot be deployed into earlier versions of WebSphere Application Server, as these versions are not Java EE 7 certified.

Using the resource adapter with other application servers

For all other Java EE 7 compliant application servers, problems that occur following the successful completion of the IBM MQ resource adapter Installation Verification Test (IVT) can be reported to IBM for the investigation of IBM MQ product trace and other IBM MQ diagnostic information. If the IBM MQ resource adapter IVT cannot be run successfully, any problems that are encountered are likely to be caused by incorrect deployment or incorrect resource definitions that are application server specific and the problems must be investigated by using the application server documentation and/or the support organization for that application server.

Java Runtime

The Java Runtime (JRE) that is used to run the application server must be one that is supported with the IBM MQ 9.0 Client. These JREs are listed in the System Requirements for IBM MQ. (Select which operating system or component report you want to see then follow the Java link that is listed under the Supported Software tab.)

Connectivity to IBM MQ 8.0 and 9.0 queue managers

The full range of JMS 2.0 functionality is available when connecting to an IBM MQ 8.0 or 9.0 queue manager by using the IBM MQ 9.0 resource adapter that has been deployed into a Java EE 7 certified application server. To make use of this functionality, the resource adapter needs to connect to the queue manager by using IBM MQ messaging provider normal mode. For more information, see PROVIDERVERSION unspecified.

Connectivity to IBM WebSphere MQ 7.5 or earlier queue managers

It is supported to deploy the IBM MQ 9.0 resource adapter into a Java EE 7 certified application server that supports JMS 2.0 and connect that resource adapter to a queue manager that is running IBM WebSphere MQ 7.5 or earlier. The functionality that is available is limited by the capabilities of the queue manager. For more information, see ../com.ibm.mq.con.doc/q123360_.html#q123360_.

MQ Extensions

The JMS 2.0 specification introduces changes to how certain behaviors work. Because IBM MQ 8.0 and 9.0 implement this specification, there are changes in behavior between these two releases and previous versions of IBM WebSphere MQ. The IBM MQ 8.0 and 9.0 IBM MQ classes for JMS include support for the Java system property com.ibm.mq.jms.SupportMQExtensions that, when set to TRUE, causes these two releases to revert these behaviors to those of IBM WebSphere MQ 7.5 or earlier. The default value of the property is FALSE.

The IBM MQ 9.0 resource adapter also includes a resource adapter property called supportMQExtensions that has the same effect and default value as the com.ibm.mq.jms.SupportMQExtensions Java system property. This resource adapter property is set to false in the ra.xml by default.

If both the resource adapter property and Java system property are set, then the system property has precedence.

Note that within the resource adapter that is already deployed within WebSphere Application Server traditional 9.0, this property is automatically set to TRUE to aid migration.

For more information, see SupportMQExtensions property.

General issues

Session interleaving is not supported
Some application servers provide a capability called session interleaving, where the same JMS session can be used in multiple transactions, although it is only enlisted in one at a time. The IBM MQ resource adapter does not support this capability, which can lead to the following issues:
An attempt to put a message to a MQ queue fails with reason code 2072 (MQRC_SYNCPOINT_NOT_AVAILABLE).
Calls to xa_close() fail with reason code -3 (XAER_PROTO), and an FDC with probe ID AT040010 is generated on the IBM MQ queue manager being accessed from the application server. For information on how to disable this capability, see your application server documentation.
Java Transaction API (JTA) specification of how XA resources are recovered for XA transaction recovery
Section 3.4.8 of the JTA specification does not define a specific mechanism by which XA resources are re-created to perform XA transactional recovery. As such, it is up to each individual transaction manager (and, therefore, the application server) how XA resources involved in an XA transaction are recovered. It is possible that, for some application servers, the IBM MQ 9.0 resource adapter does not implement the application server specific mechanisms that are used to perform XA transactional recovery.
Matching connections in a ManagedConnectionFactory
An application server can invoke the matchManagedConnections method on a ManagedConnectionFactory instance provided by the IBM MQ resource adapter. A ManagedConnection is returned only if the method finds one that matches both the javax.security.auth.Subject and javax.resource.spi.ConnectionRequestInfo arguments that were passed to the method by the application server.