Fixes are available
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