IBM MQ resource adapter statement of support

The IBM® MQ resource adapter that you must use for communication between an application and a queue manager depends on whether you are using the Jakarta Messaging 3.0 API or the JMS 2.0 API.

[JMS 2.0]IBM MQ 8.0 or later comes with a resource adapter that 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 for Java Platform, Enterprise Edition is maintained on Oracle's web site.

[MQ 9.3.0 Jun 2022][MQ 9.3.0 Jun 2022][Jakarta Messaging 3.0]From IBM MQ 9.3.0, Jakarta Messaging 3.0 is supported for developing new applications. IBM MQ 9.3.0 continues to support JMS 2.0 for existing applications. In addition to the resource adapter that supports Java EE and JMS 2.0, IBM MQ 9.3.0 provides a resource adapter that supports Jakarta Messaging. It is not supported to use both the Jakarta Messaging 3.0 API and the JMS 2.0 API in the same application. For more information, see Using IBM MQ classes for JMS.

Deployment within WebSphere 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 9.0 resource adapter can be deployed into them.

[MQ 9.3.0 Jun 2022][MQ 9.3.0 Jun 2022]To use the IBM MQ resource adapter for Jakarta Messaging with Liberty, you must use a version of Liberty that supports Jakarta EE.

WebSphere Liberty has the following features available for working with resource adapters:
  • [MQ 9.3.0 Jun 2022][MQ 9.3.0 Jun 2022][Jakarta Messaging 3.0]The messaging-3.0 feature to allow working with Jakarta Messaging 3.0 resource adapters.
  • The wmqJmsClient-2.0 feature to allow working with JMS 2.0 resource adapters.
  • The wmqJmsClient-1.1 feature to allow working with JMS 1.1 resource adapters.
Important:
  • [MQ 9.3.0 Jun 2022][MQ 9.3.0 Jun 2022][Jakarta Messaging 3.0]The IBM MQ resource adapter for Jakarta Messaging must be deployed into a version of Liberty that supports Jakarta EE. This resource adapter cannot be used with versions of Liberty that support the older Java EE specification not Jakarta EE.
  • [JMS 2.0]The IBM MQ 8.0 or later resource adapter that supports JMS 2.0 must be deployed with the wmqJmsClient-2.0 feature.

Deployment within WebSphere Application Server

WebSphere Application Server 9.0 is supplied with an IBM MQ 9.0 resource adapter already installed. Therefore, there is no requirement to install a new resource adapter. The installed resource adapter can connect in CLIENT or BINDINGS transport mode to any queue managers that are running on a supported version of IBM MQ. For more information, see Connectivity to IBM MQ 8.0 or later queue managers.

Important:
  • The IBM MQ 9.0 resource adapter cannot be deployed into versions of WebSphere Application Server before IBM MQ 9.0, because these versions are not Java EE 7 certified.
  • [Jakarta Messaging 3.0] WebSphere Application Server does not currently support Jakarta EE.
For more information about the versions of the resource adapter that are shipped with WebSphere Application Server, see the technote Which version of WebSphere MQ Resource Adapter (RA) is shipped with WebSphere Application Server?

Using the resource adapter with other application servers

For all other Java EE 7 or Jakarta EE 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 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 or later client. For more information, see System Requirements for IBM MQ. (Select which version and 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 or later queue managers

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

[MQ 9.3.0 Jun 2022][MQ 9.3.0 Jun 2022][Jakarta Messaging 3.0]The full range of Jakarta Messaging 3.0 functionality is available when connecting to an IBM MQ 9.3 queue manager by using the resource adapter that has been deployed into a Jakarta EE certified application server.

MQ Extensions

The JMS 2.0 specification introduces changes to how certain behaviors work. Because IBM MQ 8.0 or later implements this specification, there are changes in behavior between IBM MQ 8.0 and later, and earlier versions of the product. In IBM MQ 8.0 or later, the IBM MQ classes for JMS include support for the Java system property com.ibm.mq.jms.SupportMQExtensions that, when set to TRUE, causes these versions of IBM MQ 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 or later 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 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.