IBM Support

IT14820: JMS exception listener is not invoked for non-connection broken exception

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

APAR status

  • Closed as program error.

Error description

  • WebSphere MQ V7.5 classes for JMS
    ----------------------------------------
    When using the WebSphere MQ V7.5 classes for JMS, an
    application's JMS ExceptionListener will not be invoked for
    non-connection broken exceptions (for example, a JMSException
    wrapping an MQRC_GET_INHIBITED WebSphere MQ reason code) even if
    the JMS ConnectionFactory used by the application has the int
    property "JmsConstants.ASYNC_EXCEPTIONS" set to the value
    JmsConstants.ASYNC_EXCEPTIONS_ALL, which is the default in the
    V7.5.0.0 through to V7.5.0.6 classes for JMS.
    
    
    IBM MQ V8 classes for JMS
    -------------------------------
    When using the IBM MQ V8 classes for JMS, if a JMS Session is
    using a TCP/IP socket that is different from the one used by its
    parent JMS Connection then, in the case where the TCP/IP
    associated with the JMS Session get broken, the application's
    ExceptionListener would not be invoked.
    
    The application's JMS ExceptionListener would also not be
    invoked if the application was making use of synchronous JMS API
    calls after the V8.0.0.3 Fix Pack.
    
    Furthermore, as with the MQ v7.5 classes for JMS case, the JMS
    ExceptionListener would also not be invoked for non-connection
    broken exceptions even when JMS ConnectionFactory used by the
    application has the int property "JmsConstants.ASYNC_EXCEPTIONS"
    set to the value JmsConstants.ASYNC_EXCEPTIONS_ALL.
    
    Note that from IBM MQ V8.0.0.2, the default value of the
    JmsConstants.ASYNC_EXCEPTIONS JMS ConnectionFactory property
    changed from:
    
      JmsConstants.ASYNC_EXCEPTIONS_ALL
    
    to:
    
      JmsConstants.ASYNC_EXCEPTIONS_CONNECTIONBROKEN.
    
    http://www.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.
    mq.pro.doc/q123430_.htm?lang=en
    

Local fix

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    This issue affects users of the:
    
      - WebSphere MQ V7.5 classes for JMS
      - IBM MQ V8 classes for JMS
    
    who configure their applications to use a JMS ExceptionListener.
    
    
    Platforms affected:
    MultiPlatform
    
    ****************************************************************
    PROBLEM DESCRIPTION:
    This APAR addresses four issues:
    
    Issue 1:
    ------------------
    When using the WebSphere MQ V7.5 classes for JMS, the documented
    behaviour for a JMS ExceptionListener was that it would be
    invoked for any exception raised during asynchronous message
    delivery to a JMS MessageListener (not just for broken
    connection exceptions, for example MQRC_CONNECTION_BROKEN):
    
    http://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.
    mq.mig.doc/q001750_.htm?lang=en
    
    This was because the default value for the ASYNC_EXCEPTIONS JMS
    ConnectionFactory property is ASYNC_EXCEPTIONS_ALL.
    
    However, when using the MQ classes for JMS, non-connection
    broken exceptions (for example MQRC_GET_INHIBITED) were not
    delivered as JMSExceptions to the ExceptionListener registered
    by the application.
    
    Issue 2:
    ------------------
    When using the IBM MQ V8 classes for JMS, an application's
    ExceptionListener would not be invoked for non-connection broken
    exceptions when JMS ConnectionFactory used by the application
    had the property "JmsConstants.ASYNC_EXCEPTIONS" set to the
    value JmsConstants.ASYNC_EXCEPTIONS_ALL.  (The default from MQ
    V8.0.0.2 is JmsConstants.ASYNC_EXCEPTIONS_CONNECTIONBROKEN).
    
    Issue 3:
    ------------------
    When using the IBM MQ V8 classes for JMS, the ExceptionListener
    registered on the JMS Connection by the application would only
    be invoked if the TCP/IP connection associated with the JMS
    Connection object was broken.  This meant that if a JMS Session
    was using a different TCP/IP socket compared to the JMS
    Connection, the application's ExceptionListener would not be
    invoked if only that TCP/IP socket used by the JMS Session was
    broken.
    
    Issue 4:
    ------------------
    After the MQ V8.0.0.3 Fix Pack, the ExceptionListener would only
    be invoked for a connection broken reason if the application was
    using asynchronous message consumers, and not when using
    synchronous message consumers.
    

Problem conclusion

  • To maintain behaviour for current JMS applications that
    configure a JMS MessageListener and a JMS ExceptionListener the
    default value for the ASYNC_EXCEPTIONS JMS ConnectionFactory
    property has been changed to ASYNC_EXCEPTIONS_CONNECTIONBROKEN
    for the WebSphere MQ V7.5 classes for JMS.  As a result, by
    default, only exceptions corresponding to broken connection
    error codes are delivered to an application's JMS
    ExceptionListener.
    
    The WebSphere MQ V7.5 classes for JMS have also been updated
    such that JMSExceptions relating to non-connection broken
    errors, which occur during message delivery to asynchronous
    message consumers, are still delivered to a registered
    ExceptionListener when the JMS ConnectionFactory used by the
    application has the ASYNC_EXCEPTIONS property set to the value
    ASYNC_EXCEPTIONS_ALL.
    
    
    The IBM MQ v8 classes for JMS have been updated such that:
    
    - An ExceptionListener registered by an application is invoked
    for any connection broken exceptions regardless of whether the
    application is using synchronous or asynchronous message
    consumers.
    
    - An ExceptionListener registered by an application is invoked
    if a TCP/IP socket used by a JMS Session is broken.
    
    - Non-connection broken exceptions (for example
    MQRC_GET_INHIBITED) that arise during message delivery are
    delivered to an application's ExceptionListener when the
    application is using asynchronous message consumers and the JMS
    ConnectionFactory used by the application has the
    ASYNC_EXCEPTIONS property set to the value ASYNC_EXCEPTIONS_ALL.
    
    [Note: An ExceptionListener will only be invoked once for a
    connection broken exception, even if two TCP/IP connections (one
    used by a JMS Connection and one used by a JMS Session) are
    broken.]
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
    Version    Maintenance Level
    v7.5       7.5.0.8
    v8.0       8.0.0.6
    v9.0 CD    9.0.1
    v9.0 LTS   9.0.0.1
    
    The latest available maintenance can be obtained from
    'WebSphere MQ Recommended Fixes'
    http://www-1.ibm.com/support/docview.wss?rs=171&uid=swg27006037
    
    If the maintenance level is not yet available information on
    its planned availability can be found in 'WebSphere MQ
    Planned Maintenance Release Dates'
    http://www-1.ibm.com/support/docview.wss?rs=171&uid=swg27006309
    ---------------------------------------------------------------
    

Temporary fix

Comments

APAR Information

  • APAR number

    IT14820

  • Reported component name

    WMQ BASE MULTIP

  • Reported component ID

    5724H7241

  • Reported release

    750

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2016-04-17

  • Closed date

    2016-06-20

  • Last modified date

    2017-06-01

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    WMQ BASE MULTIP

  • Fixed component ID

    5724H7241

Applicable component levels

  • R750 PSY

       UP



Document information

More support for: WebSphere MQ
APAR / Maintenance

Software version: 7.5

Reference #: IT14820

Modified date: 01 June 2017


Translate this page: