IBM MQ classes for JMS

IBM® MQ classes for JMS is the JMS provider that is supplied with IBM MQ. IBM MQ classes for JMS implements the interfaces defined in the javax.jms package, and also provides two sets of extensions to the JMS API. Both Java Platform, Standard Edition ( Java SE) and Java Platform, Enterprise Edition ( Java EE) applications can use IBM MQ classes for JMS.

[V9.0.0.6 Mar 2019]Note:

IBM MQ 9.0.5 was the final Continuous Delivery release for IBM MQ 9.0. Therefore, from IBM MQ 9.0.0 Fix Pack 6 onwards, the Javadoc information for the IBM MQ classes for JMS is updated to reflect the behavior of the IBM MQ classes for JMS only for features available to Long Term Support customers.

The JMS specification defines a set of interfaces that applications can use to perform messaging operations. From IBM MQ 8.0, the product supports the JMS 2.0 version of the JMS standard. This implementation offers all the features of the classic API but requires fewer interfaces and is simpler to use. For more information, see The JMS model and the JMS 2.0 specification at Java.net.

The javax.jms package specifies the details of the JMS interfaces, and a JMS provider implements these interfaces for a specific messaging product. IBM MQ classes for JMS is a JMS provider that implements the JMS interfaces for IBM MQ and also provides the following two sets of extensions to the JMS API:
  • IBM MQ JMS extensions
  • IBM JMS extensions

A connection factory, queue, or topic object created using the javax.jms interface or either set of JMS extensions can be addressed using any of these APIs; that is, it can be cast to any of the interfaces. To maintain application portability at the highest level, use the most generic API that is suitable for your requirements.

IBM MQ JMS extensions

IBM MQ classes for JMS also provides extensions to the JMS API. Previous releases of IBM MQ classes for JMS contain extensions that are implemented in MQConnectionFactory, MQQueue, and MQTopic objects. These objects have properties and methods that are specific to IBM MQ. The objects can be administered objects, or an application can create the objects dynamically at run time. From IBM WebSphere® MQ 7.0, IBM MQ classes for JMS maintains these extensions, and you can continue to use, without change, any applications that use these extensions. These extensions are known as the IBM MQ JMS extensions. Note that, in this set of documentation, objects that are created dynamically by an application at run time are not considered to be administered objects.

IBM JMS extensions

In addition to the IBM MQ JMS extensions, from IBM WebSphere MQ 7.0, IBM MQ classes for JMS provides a more generic set of extensions to the JMS API. These extensions are known as the IBM JMS extensions, and have the following broad objectives:
  • To provide a greater level of consistency across IBM JMS providers
  • To make it easier to write a bridge application between two IBM messaging systems
  • To make it easier to port an application from one IBM JMS provider to another
The main focus of these extensions concerns creating and configuring connection factories and destinations dynamically at run time, but the extensions also provide function that is not directly related to messaging, such as function for problem determination.

A connection factory, queue, or topic object created using the javax.jms interface or either set of JMS extensions can be addressed using any of these APIs; that is, it can be cast to any of the interfaces. To maintain application portability at the highest level, use the most generic API that is suitable for your requirements.