Fixes are available
APAR status
Closed as program error.
Error description
When using the WebSphere MQ V7 classes for Java, the application putting messages to a queue fail with MQRC 2334 (MQRC_RFH_ERROR). If WebSphere MQ File Transfer Edition (FTE) is moving messages to the Database Logger Reject Queue when the issue occurs, the FTE error logs will show the following messages: BFGDB0003E: A problem occurred with the database. The database driver reported the following details SQL State ?23000?,Error Code ?1400?, Message ?ORA-01400: cannot insert NULL into ("string") BFGDB0018E: An MQ problem occurred while the database logger was rejecting a message onto the reject queue. The reported reason code was MQRC_RFH_ERROR and the reported message text was: MQJE001: Completion Code '2', Reason '2334'.
Local fix
Problem summary
**************************************************************** USERS AFFECTED: This issue affects: - Users of WebSphere MQ File Transfer Edition (WMQ FTE) that have configured the Database Logger component with a Reject Queue and who process WebSphere MQ messages that have numerical data encoded in Encoding 546 (0x222), as indicated by the WebSphere MQ MQMD property Encoding. - Users of the WebSphere MQ V7 classes for Java that have applications which perform the following actions: - Get a message that does not contain an RFH2 header from a queue, using one of the following methods: * MQQueue.get(MQMessage) * MQQueue.get(MQMessage, MQGetMessageOptions) * MQQueue.get(MQMessage, MQGetMessageOptions, int) - Add a property to the message using one of the methods shown below: * MQMessage.setBooleanProperty(String, boolean) * MQMessage.setBooleanProperty(String, MQPropertyDescriptor, boolean) * MQMessage.setByteProperty(String, byte) * MQMessage.setByteProperty(String, MQPropertyDescriptor, byte) * MQMessage.setBytesProperty(String, byte[]) * MQMessage.setBytesProperty(String, MQPropertyDescriptor, byte[]) * MQMessage.setDoubleProperty(String, double) * MQMessage.setDoubleProperty(String, MQPropertyDescriptor, double) * MQMessage.setFloatProperty(String, float) * MQMessage.setFloatProperty(String, MQPropertyDescriptor, float) * MQMessage.setInt2Property(String, MQPropertyDescriptor, short) * MQMessage.setInt2Property(String, short) * MQMessage.setInt4Property(String, value) * MQMessage.setInt4Property(String, MQPropertyDescriptor, int) * MQMessage.setInt8Property(String, long) * MQMessage.setInt8Property(String, MQPropertyDescriptor, long) * MQMessage.setIntProperty(String, int) * MQMessage.setIntProperty(String, MQPropertyDescriptor, int) * MQMessage.setLongProperty(String, long) * MQMessage.setLongProperty(String, MQPropertyDescriptor, long) * MQMessage.setObjectProperty(String, MQPropertyDescriptor, Object) * MQMessage.setObjectProperty(String, Object) * MQMessage.setShortProperty(String, MQPropertyDescriptor, short) * MQMessage.setShortProperty(String, short) * MQMessage.setStringProperty(String, MQPropertyDescriptor, String) * MQMessage.setStringProperty(String, String) - Put the message to a new queue on a WebSphere MQ V7 queue manager using one of the methods shown below: * MQQueue.put(MQMessage) * MQQueue.put(MQMessage, MQPutMessageOptions) where the Encoding property of the message is set to 546 (0x222). Platforms affected: All Distributed (iSeries, all Unix and Windows) +Java **************************************************************** PROBLEM SUMMARY: When the WebSphere MQ FTE Database Logger moves a message to the Reject Queue, it uses the WebSphere MQ V7 classes for Java to: - Get the message from the queue it is currently on. - Add the String property: usr.WMQFTE_ReasonForRejection to the message, by calling the method: MQMessage.setStringProperty(String, String) - Put the new message to the Reject Queue by calling the method: MQQueue.put(MQMessage) When WebSphere MQ File Transfer Edition called: MQQueue.put(MQMessage) or an application using the WebSphere MQ V7 classes for Java called one of the following methods: MQQueue.put(MQMessage) MQQueue.put(MQMessage, MQPutMessageOptions) the classes for Java added an RFH2 header to the message, immediately after the MQMD, to store the message properties. String data in the header was written using Coded Character Set 1208 and numerical data was encoded using Encoding 1. Due to the way header chaining works in WebSphere MQ, the Coded Character Set and Encoding properties within the MQMD indicate how the character set and numerical data in the next header should be interpreted. However, when the WebSphere MQ V7 classes for Java added the RFH2 header, they did not update the Coded Character Set and Encoding properties within the MQMD. This meant that the information in the MQMD was incorrect. When the WebSphere MQ V7 classes for Java eventually issued the MQPUT call, the queue manager looked at the value of the Version property within the RFH2. This is numerical data, so the queue manager used the Encoding property in the MQMD to determine how this data should be interpreted. The data in the RFH2 was encoding using Encoding 1. As the Encoding property in the MQMD was set to 546 (0x222) and not 1, then the WebSphere MQ queue manager was unable to read the Version property in the RFH2 correctly, and returned an MQException to either WebSphere MQ File Transfer Edition or the application using the WebSphere MQ V7 classes for Java, containing the Reason Code 2334 (MQRC_RFH_ERROR).
Problem conclusion
The WebSphere MQ V7 classes for Java have been updated to ensure that the Coded Character Set properties within the MQMD are updated correctly if an RFH2 header is added to store property information prior to the message being put onto a queue hosted by a WebSphere MQ V7 queue manager. The values of the Coded Character Set and Encoding properties that were originally in the MQMD are now copied into the Coded Character Set and Encoding properties in the RFH2 as well, to ensure that the header chaining works correctly. --------------------------------------------------------------- The fix is targeted for delivery in the following PTFs: v7.0 Platform Fix Pack 7.0.1.6 -------- -------------------- Windows U200328 AIX U840698 HP-UX (PA-RISC) U841555 HP-UX (Itanium) U841560 Solaris (SPARC) U841556 Solaris (x86-64) U841562 iSeries tbc_p700_0_1_6 Linux (x86) U841557 Linux (x86-64) U841561 Linux (zSeries) U841558 Linux (Power) U841559 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
IC75662
Reported component name
WMQ WINDOWS V7
Reported component ID
5724H7220
Reported release
700
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2011-04-07
Closed date
2011-04-27
Last modified date
2011-04-27
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 WINDOWS V7
Fixed component ID
5724H7220
Applicable component levels
R700 PSY
UP
[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSDEZSF","label":"IBM WebSphere MQ Managed File Transfer for z\/OS"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.0","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]
Document Information
Modified date:
31 March 2023