JMS (Java Message Service) Specification

JMS 2.1 Plan

This is a historical record of the JMS 2.1 plan before work on JMS 2.1 ceased and JSR 386 was withdrawn

Here’s the high-level list of features planned for JMS 2.1, and an approximate order in which they will be considered.

See also the JMS 2.1 schedule.

For a longer list of all the open issues (many of which won’t make it into JMS 2.1), see the JMS 2.1 planning long list.

Major changes

Minor changes, which could be considered in parallel to this, are listed under Minor changes below.

  • Flexible JMS MDBs JMS_SPEC-116
  • CDI beans as message listeners JMS_SPEC-134
    • (Under discussion)
  • Batch delivery to MDBs JMS_SPEC-36
  • New and custom acknowledgement modes
  • Allowing setMessageListener in a Java EE web or EJB application
  • API to create a connection factory (without using JNDI) in a Java SE application JMS_SPEC-89
  • API to create a queue or topic (without using JNDI) in a Java SE application JMS_SPEC-90
  • Repeatable annotations for resource definitions JMS_SPEC-151
  • Configuring message redelivery and dead message queues for MDBs JMS_SPEC-117
    • redeliveryInterval
    • redeliveryLimit
    • deadMessageLookup
  • Missing method createXAJMSContext() on XAJMSContext (to allow multiple XAJMSContexts to share the same connection) JMS_SPEC-152
  • JMS in a Java EE application: adding clarifications and removing restrictions
    • Defining the behavior of a JMS session that is created outside a JTA transaction but used to send or receive a message within a JTA transaction, and vice versa. JMS_SPEC-129
    • Defining an API to allow a JMS connection factory, connection or session to opt-out of a JTA transaction JMS_SPEC-130
    • Clarifying the existing restrictions on using client-acknowledgement and local transactions in a Java EE environment and removing these restrictions where possible JMS_SPEC-131

Minor changes

We need have a separate “issue triage” session to discuss minor proposals in turn. The following minor issues are being actively promoted by members of the community (e.g. by recent updates to the issue).

  • StreamMessage.getBody(Class<T>) JMS_SPEC-144

  • Add generics to methods currently returning raw types JMS_SPEC-108

  • Clarify the difference (if any) between JMSException.getLinkedException() and JMSException.getCause() JMS_SPEC-113

Anything else

There’s a complete list of all currently-proposed features (too many to do all of them) on the on the JMS planning long list.

Note the following two requests for changes to the MDB specification (by definition this is not within our direct control).

  • Allow listener method to always be determined at runtime by resource adapter EJB_SPEC-126

  • Define a standard way to specify the resource adapter used by a JMS MDB EJB_SPEC-127