IBM Support

IV43367: WEBSPHERE MQ V7 CLASSES FOR JMS EXCEPTION REPORTS ERROR MQJMS1050 RFH HEADER INCORRECT FORMAT, MQJMS158 EXCEPTION

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • When using the v7 WebSphere Application Server, an MQJMS1050
    exception is seen in SystemOut.log file:
    
    J2CA0056I: The Connection Manager received a fatal connection
    error from the Resource  Adapter. The exception is:
    javax.jms.MessageFormatException: MQJMS1050: The MQRFH2 header
    has an incorrect format.
    
    An FFDC file is created showing MessageFormatException:
    MQJMS1058: Invalid message property name.
    
    ----------------------------------------------------------------
    Linked exception:javax.jms.MessageFormatException: MQJMS1058:
    Invalid message property name: 'ReplyToQ context="none"'.
    at
    com.ibm.msg.client.wmq.v6.jms.internal.JMSMessage.newMessageForm
    atException(JMSMessage.java:5785)
    at
    com.ibm.msg.client.wmq.v6.jms.internal.JMSMessage.setObjectPrope
    rty(JMSMessage.java:6982)
    at
    com.ibm.msg.client.wmq.v6.jms.internal.JMSMessage._parseUsrFolde
    r(JMSMessage.java:3730)
    at
    com.ibm.msg.client.wmq.v6.jms.internal.MQJMSMessage.createJMSMes
    sage(MQJMSMessage.java:639)
    at
    com.ibm.msg.client.wmq.v6.jms.internal.MQMessageConsumer.isMessa
    geSelected(MQMessageConsumer.java:3764)
    ----------------------------------------------------------------
    
    This problem may be seen when JMS API creates a property with
    null value.
    

Local fix

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    This issue affects users of the WebSphere MQ classes for JMS
    who are running in migration mode to consume messages from a
    queue manager, where the messages which are being consumed
    contain an RFH2 which has a <usr> folder containing user
    defined properties.
    
    This includes users of:
    
    - The WebSphere MQ V7 classes for JMS.
    - The WebSphere MQ V7 Resource Adapter.
    - The WebSphere Application Server V7 WebSphere MQ messaging
    provider.
    - The WebSphere Application Server V8 WebSphere MQ messaging
    provider.
    - The WebSphere Application Server V6.1 WebSphere MQ messaging
    provider who have configured the WebSphere variable
    'MQ_INSTALL_ROOT' to point to a WebSphere MQ V7 installation.
    
    Platforms affected:
    All Distributed (iSeries, all Unix and Windows) +Java +Java zOS
    ****************************************************************
    PROBLEM SUMMARY:
    If an application utilising the WebSphere MQ classes for JMS API
    attempted to consume a message from a queue manager while
    running in migration mode, (for example, if the queue manager
    version was WebSphere MQ v6, or if SHARECNV=0 on the channel of
    a v7 queue manager, or the JMS ConnectionFactory has been
    configured with a PROVIDERVERSION=6 value), the following
    exception stack was seen if the RFH2 of the message contained a
    user defined property with a null value:
    
    (stack taken from WebSphere MQ classes for JMS v7.0.1.9):
    
    javax.jms.MessageFormatException: MQJMS1050: The MQRFH2 header
    has an incorrect format.
    at
    com.ibm.msg.client.wmq.v6.jms.internal.JMSMessage.newMessageForm
    atException(JMSMessage.java:5755)
    at
    com.ibm.msg.client.wmq.v6.jms.internal.JMSMessage._parseUsrFolde
    r(JMSMessage.java:3842)
    at
    com.ibm.msg.client.wmq.v6.jms.internal.MQJMSMessage.createJMSMes
    sage(MQJMSMessage.java:643)
    at
    com.ibm.msg.client.wmq.v6.jms.internal.MQMessageConsumer.isMessa
    geSelected(MQMessageConsumer.java:3791)
    at
    com.ibm.msg.client.wmq.v6.jms.internal.MQMessageConsumer.getMess
    age(MQMessageConsumer.java:2819)
    at
    com.ibm.msg.client.wmq.v6.jms.internal.MQMessageConsumer.receive
    Internal(MQMessageConsumer.java:4649)
    at
    com.ibm.msg.client.wmq.v6.jms.internal.MQMessageConsumer.receive
    (MQMessageConsumer.java:4118)
    at
    com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receiveIn
    boundMessage(JmsMessageConsumerImpl.java:883)
    at
    com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receive(J
    msMessageConsumerImpl.java:432)
    at
    com.ibm.mq.jms.MQMessageConsumer.receive(MQMessageConsumer.java:
    228)
    ... ... ...
    
    javax.jms.MessageFormatException: MQJMS1058: Invalid message
    property name: 'propertyNullValue context="none"'.
    at
    com.ibm.msg.client.wmq.v6.jms.internal.JMSMessage.newMessageForm
    atException(JMSMessage.java:5779)
    at
    com.ibm.msg.client.wmq.v6.jms.internal.JMSMessage.setObjectPrope
    rty(JMSMessage.java:6976)
    at
    com.ibm.msg.client.wmq.v6.jms.internal.JMSMessage._parseUsrFolde
    r(JMSMessage.java:3729)
    at
    com.ibm.msg.client.wmq.v6.jms.internal.MQJMSMessage.createJMSMes
    sage(MQJMSMessage.java:643)
    at
    com.ibm.msg.client.wmq.v6.jms.internal.MQMessageConsumer.isMessa
    geSelected(MQMessageConsumer.java:3791)
    at
    com.ibm.msg.client.wmq.v6.jms.internal.MQMessageConsumer.getMess
    age(MQMessageConsumer.java:2819)
    at
    com.ibm.msg.client.wmq.v6.jms.internal.MQMessageConsumer.receive
    Internal(MQMessageConsumer.java:4649)
    at
    com.ibm.msg.client.wmq.v6.jms.internal.MQMessageConsumer.receive
    (MQMessageConsumer.java:4118)
    at
    com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receiveIn
    boundMessage(JmsMessageConsumerImpl.java:883)
    at
    com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receive(J
    msMessageConsumerImpl.java:432)
    at
    com.ibm.mq.jms.MQMessageConsumer.receive(MQMessageConsumer.java:
    228)
    ... ... ...
    
    
    
    An example RFH2 as viewed on the queue manager prior to the
    attempted message consumption which would cause this problem
    was:
    
    <jms>
    <Dlv context="none"dt="string">2</Dlv>
    <Dst context="none" dt="string">queue:///MYQ</Dst>
    <Tmscontext="none" t="string">1369910054783</Tms>
    </jms>
    
    <usr>
    <MyPropertyName context="none"
    xsi:nil="true"></MyPropertyName>
    </usr>
    
    <mcd>
    <Msd context="none" dt="string">jms_text</Msd>
    </mcd>
    
    
    The attribute which resulted in the problem in this example is
    the 'context="none"' contained within the user defined property,
    "myPropertyName" within the <usr> folder.
    
    These user defined properties can be created using code of the
    following form:
    
    ----------------------------------------------------------------
    Connection conn = connectionFactory.createConnection();
    Session session = conn.createSession(false,
    Session.AUTO_ACKNOWLEDGE);
    MessageProducer producer = session.createProducer(destination);
    
    TextMessage msg = session.createTextMessage();
    msg.setObjectProperty("myPropertyName", null);
    msg.setText("This is a test");
    producer.send(msg);
    ----------------------------------------------------------------
    
    
    Putting a message to a queue using the above code snippet would
    not directly result in the problem being seen when consumed by
    a JMS application, as the above snippet would not add the
    RFH2 attribute 'context="none"' to user defined element.
    
    However, if the message was consumed using the WebSphere MQ
    classes for Java, and then put back to the queue using the
    WebSphere MQ classes for Java API, the 'context="none"'
    attribute would be added to RFH2.
    
    Subsequently, if an application using the WebSphere MQ classes
    for JMS API in migration mode was to attempt to consume this
    message, the receive would fail with the above exception
    message.
    
    For example, the following sequence of events would result in
    the message being seen:
    
    (1) WebSphere MQ classes for JMS application puts a message to
    a queue manager, which contains a user defined property with a
    null value.
    
    (2) A v7 WebSphere MQ classes for Java application consumes the
    message from the queue, and puts it to a v6 WebSphere MQ
    queue manager.
    
    (3) A v7 WebSphere MQ classes for JMS application attempts to
    consume the message from the v6 WebSphere MQ queue.
    
    
    Note that the nature symptoms for this problem are very similar
    to APAR IV39376:
    
    http://www.ibm.com/support/docview.wss?uid=swg1IV39376
    
    The difference is that APAR IV39376 addresses a problem where
    the object property set on the JMS message had content.  This
    APAR, IV43367 addresses the situation where the object property
    set on the JMS message had null content.
    

Problem conclusion

  • Prior to v7, the WebSphere MQ classes for Java API would return
    a message data to an application which contained the RFH2.  As
    of v7, the RFH2 does not appear in the returned message data.
    
    The processing of the RFH2 by the WebSphere MQ classes for Java
    when putting a message back to the queue results in an RFH2
    which might not have an identical structure to the message
    which was received.  In the case of user defined properties
    which are stored in the <usr> folder within the RFH2, an
    attribute 'context="none"' is added to the element.
    
    The WebSphere MQ classes for JMS when running in its normal
    mode of operation processed this attribute appropriately when
    receiving a message and constructing the JMS Message.
    
    As a result of the code change associated with this APAR, the
    WebSphere MQ classes for JMS running in migration mode now also
    tolerates attributes contained within the <usr> folder
    elements.
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
                       v7.0
    Platform           Fix Pack 7.0.1.11
    --------           --------------------
    Windows            7.0.1.11
    AIX                7.0.1.11
    HP-UX (PA-RISC)    7.0.1.11
    HP-UX (Itanium)    7.0.1.11
    Solaris (SPARC)    7.0.1.11
    Solaris (x86-64)   7.0.1.11
    iSeries            7.0.1.11
    Linux (x86)        7.0.1.11
    Linux (x86-64)     7.0.1.11
    Linux (zSeries)    7.0.1.11
    Linux (Power)      7.0.1.11
    zOS                7.0.1.11
    
                       v7.1
    Platform           Fix Pack 7.1.0.4
    --------           --------------------
    Windows            7.1.0.4
    AIX                7.1.0.4
    HP-UX (Itanium)    7.1.0.4
    Solaris (SPARC)    7.1.0.4
    Solaris (x86-64)   7.1.0.4
    iSeries            7.1.0.4
    Linux (x86)        7.1.0.4
    Linux (x86-64)     7.1.0.4
    Linux (zSeries)    7.1.0.4
    Linux (Power)      7.1.0.4
    zOS                7.1.0.4
    
    Platform           v7.5
    --------           --------------------
    Multiplatforms     7.5.0.3
    
    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

    IV43367

  • Reported component name

    WMQ LIN X86-64

  • Reported component ID

    5724H7230

  • Reported release

    700

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2013-05-29

  • Closed date

    2013-05-31

  • Last modified date

    2013-05-31

  • 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 LIN X86-64

  • Fixed component ID

    5724H7230

Applicable component levels

  • R700 PSY

       UP

[{"Line of Business":{"code":"LOB45","label":"Automation"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSFKSJ","label":"WebSphere MQ"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.0"}]

Document Information

Modified date:
03 October 2021