IBM Support

IT11846: A JMS CLIENT COULD NOT PUT MESSAGE TO A QUEUE CONTAINING THE PERCENTAGE '%' CHARACTER

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

  • For both the MQ Appliance and a stand-alone IBM MQ classes for
    JMS application, when putting a message to a queue where the
    queue name name included the percentage '%' character, an error
    is returned to the application.
    
    The error message seen is:
    
        "The specified value 'LQ01%1' is not allowed"
    
    JMS trace shows the following information:
    
    [08/09/15 09:31:26.980.00]  0004 JMSCC0005: The specified value
    'MYQUEUE%1' is not allowed for 'XMSC_DESTINATION_NAME'.
    [com.ibm.msg.client.jms.DetailedJMSException] at:
    [08/09/15 09:31:26.980.00]  0004
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
    Method)
    

Local fix

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    This issue affects users of the WebSphere MQ JMS client
    attempting to put messages to a queue with a '%' character in
    its name.
    
    
    Platforms affected:
    MultiPlatform
    
    ****************************************************************
    PROBLEM DESCRIPTION:
    The IBM MQ classes for JMS permit queue names to be specified
    either as a simple name, or as a URI.
    
    All queue names passed into IBM MQ classes for JMS were treated
    as if they were URIs, meaning that if there was a '%' character
    in a queue name, the JMS client would replace the '%' character
    and the two following characters in the queue name with the
    equivalent URI decoded value.
    
    This resulted in the queue name becoming malformed, which
    resulted in the creation of the JMS Destination from the JMS
    Session failing.
    
    For example, when using the JMS method call:
    
      javax.jms.Session.createQueue("MYQUEUE%");
    
    resulted in an exception of the form:
    
     com.ibm.msg.client.jms.DetailedJMSException: JMSCC0005: The
    specified value 'MYQUEUE%' is not allowed for
    'XMSC_DESTINATION_NAME'.
    The given value is not allowed for the property specified.
    Change the value to a value that is supported for the property.
    	at
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
    Method)
    	at
    sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
    Source)
    	at
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknow
    n Source)
    	at java.lang.reflect.Constructor.newInstance(Unknown
    Source)
    	at
    com.ibm.msg.client.commonservices.j2se.NLSServices.createExcepti
    on(NLSServices.java:311)
    	at
    com.ibm.msg.client.commonservices.nls.NLSServices.createExceptio
    n(NLSServices.java:225)
    	at
    com.ibm.msg.client.jms.internal.JmsErrorUtils.createException(Jm
    sErrorUtils.java:126)
    	at
    com.ibm.msg.client.jms.internal.JmsPropertyContextImpl.setObject
    PropertyInternal(JmsPropertyContextImpl.java:457)
    	at
    com.ibm.msg.client.jms.internal.JmsPropertyContextImpl.setObject
    Property(JmsPropertyContextImpl.java:610)
    	at
    com.ibm.msg.client.wmq.common.internal.WMQPropertyContext.setObj
    ectProperty(WMQPropertyContext.java:558)
    	at
    com.ibm.msg.client.wmq.common.internal.WMQPropertyContext.setStr
    ingProperty(WMQPropertyContext.java:613)
    	at
    com.ibm.msg.client.wmq.common.internal.WMQDestination.<init>(WMQ
    Destination.java:3448)
    &#09;at
    com.ibm.msg.client.wmq.common.internal.WMQDestination.<init>(WMQ
    Destination.java:3404)
    &#09;at
    com.ibm.msg.client.wmq.factories.WMQFactoryFactory.createProvide
    rDestination(WMQFactoryFactory.java:271)
    &#09;at
    com.ibm.msg.client.jms.admin.JmsDestinationImpl.setProviderDesti
    nation(JmsDestinationImpl.java:317)
    &#09;at
    com.ibm.msg.client.jms.admin.JmsDestinationImpl.initialise(JmsDe
    stinationImpl.java:215)
    &#09;at
    com.ibm.msg.client.jms.admin.JmsDestinationImpl.<init>(JmsDestin
    ationImpl.java:180)
    &#09;at
    com.ibm.msg.client.jms.admin.JmsJndiDestinationImpl.<init>(JmsJn
    diDestinationImpl.java:124)
    &#09;at
    com.ibm.mq.jms.MQDestination.<init>(MQDestination.java:197)
    &#09;at com.ibm.mq.jms.MQQueue.<init>(MQQueue.java:135)
    &#09;at
    com.ibm.msg.client.wmq.factories.admin.WMQJmsFactory.createQueue
    (WMQJmsFactory.java:163)
    &#09;at
    com.ibm.msg.client.wmq.factories.admin.WMQJmsFactory.createQueue
    (WMQJmsFactory.java:465)
    &#09;at
    com.ibm.msg.client.jms.internal.JmsSessionImpl.createQueue(JmsSe
    ssionImpl.java:1516)
    &#09;at com.ibm.mq.jms.MQSession.createQueue(MQSession.java:682)
    

Problem conclusion

  • The IBM MQ classes for JMS now only perform URI decoding on JMS
    queue names containing the '%' character if the name is
    specified as a URI (beginning with the string "queue://"), and
    if the characters following the '%' can be decoded to a valid
    character.
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
    Version    Maintenance Level
    v8.0       8.0.0.6
    
    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

    IT11846

  • Reported component name

    IBM MQ APPL M20

  • Reported component ID

    5725S1400

  • Reported release

    800

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2015-10-20

  • Closed date

    2016-04-12

  • Last modified date

    2016-04-12

  • 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 APPL M20

  • Fixed component ID

    5725S1400

Applicable component levels

  • R800 PSY

       UP

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

Document Information

Modified date:
12 April 2016