IBM Support

IT28156: Properties on JMS destinations created programmatically from a URI are not set when trace is enabled.

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

  • An IBM MQ classes for JMS application creates a JMS destination
    programmatically, passing in a URI that contains a name/value
    pair, as shown below:
    
      Queue queue =
    Session.createQueue("queue:///MYQUEUE?targetClient=1");
    
    The application then uses the JMS destination, to send messages
    to it.
    
    When the application is run without IBM MQ classes for JMS trace
    enabled, the messages that are sent to the destination do not
    have an MQRFH2 header within them.  This is expected, as the JMS
    destination has the targetClient property set to the value 1
    (which maps to the value "MQ").
    
    The application is then run with IBM MQ classes for JMS trace
    enabled.  Now, when messages are sent to the destination, the
    value of the "targetClient" property is ignored, and the
    messages that are put to the queue contain an MQRFH2 header,
    which is the default behaviour without specifying the value of
    the "targetClient" property.
    

Local fix

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    This issue affects users of:
    
    - The IBM MQ V9.0 classes for JMS, where the IBM MQ classes for
    JMS also include an interim fix for APAR IT26587.
    - The IBM MQ V9.0 resource adapter, where the IBM MQ resource
    adapter also includes an interim fix for APAR IT26587.
    
    - The IBM MQ V9.1.0.1 classes for JMS.
    - The IBM MQ V9.1.0.1 resource adapter.
    
    who are asked to collect an IBM MQ classes for JMS trace of an
    application that creates JMS destinations programmatically.
    
    
    Platforms affected:
    MultiPlatform
    
    ****************************************************************
    PROBLEM DESCRIPTION:
    As part of APAR IT26587, the internal WMQDestination class
    within the IBM MQ classes for JMS was updated to implement a
    "toString()" method.  This new method was invoked when IBM MQ
    classes for JMS trace was enabled, and returned a String object
    containing a URI representation of the JMS destination being
    traced.
    
    The mechanism used by the "toString()" method to construct the
    URI resulted in the following behaviour:
    
    - If an application created a JMS destination programmatically
    from a URI, which contained one or more name/value pairs
    representing the properties of the destination.
    - And the application was run with IBM MQ classes for JMS trace
    enabled.
    
    then the properties contained within the name/value pairs were
    not configured on the JMS destination that was created and
    returned back to the application - resulting in the default
    configuration values being used for the destination.
    

Problem conclusion

  • Two changes have been made to the internal WMQDestination class
    as a result of this APAR:
    
    - The class has been updated to cache the String representing
    the URI for a JMS destination.
    - The "toString()" method has been updated to return either the
    cached URI for the JMS destination, or a String containing the
    object reference if the URI has not been calculated at the time
    of asking.
    
    This means that the method on the MQ classes for JMS internal
    class:
    
     WMQDestination.toString()
    
    does not generate the URI for a JMS destination whenever it is
    called by the the IBM MQ classes for JMS trace mechanism. As a
    result:
    
    - If an application creates a JMS destination programmatically
    from a URI, which contains one or more name/value pairs
    representing the properties of the destination.
    - And the application is run with IBM MQ classes for JMS trace
    enabled.
    
    then the properties specified by the name/value pairs will be
    set on the JMS destination that is returned to the application.
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
    Version    Maintenance Level
    v9.0 LTS   9.0.0.6
    v9.1 CD    9.1.3
    v9.1 LTS   9.1.0.2
    
    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

    IT28156

  • Reported component name

    IBM MQ BASE M/P

  • Reported component ID

    5724H7261

  • Reported release

    900

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2019-02-19

  • Closed date

    2019-03-08

  • Last modified date

    2019-03-08

  • 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

    IBM MQ BASE M/P

  • Fixed component ID

    5724H7261

Applicable component levels

[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"9.0","Edition":"","Line of Business":{"code":"LOB36","label":"IBM Automation"}}]

Document Information

Modified date:
08 March 2019