APAR status
Closed as program error.
Error description
A Java application is using the MQ classes for Java to create and send an MQ message to a queue. The message being sent is: - The message body is comprised of character data, with a corresponding header format type specified as 'MQFMT_STRING' (MQSTR). - The message contains a user defined message property - The application has configured the MQMD character encoding scheme, CodedCharSetId (CCSID), which is a value other than 1208 (UTF-8). When the message is inspected on the queue after being put by the application, it is observed that the message body has been encoded using the CCSID 1208 character encoding scheme, and not the expected value as specified by the application.
Local fix
Problem summary
**************************************************************** USERS AFFECTED: This issue affects users of the MQ classes for Java who are sending messages to an MQ queue/topic, where: (a) The message body is defined to be in the MQFMT_STRING (MQSTR) format (b) The message contains one or more user defined message properties (c) The application has specified a non-1208 CCSID for the message body encoding Platforms affected: MultiPlatform **************************************************************** PROBLEM DESCRIPTION: When a Java application was putting a message to a queue, where: - The MQ Classes for Java API was being used to put the message - The message body was defined to be in the MQFMT_STRING (MQSTR) format - The message contained user defined message properties - The application had specified that the message body text data was encoded in a CCSID other than 1208 then the character text within the body of the message was encoded using CCSID 1208 (UTF-8), irrespective of what the application has specified as the encoding of the message. The following code snippet demonstrates the issue: // Create a com.ibm.mq.MQMessage object instance MQMessage mqMessage = new MQMessage(); // Define the message body as containing character data mqMessage.format = MQConstants.MQFMT_STRING; // Set the message body character encoding scheme as 37 (IBM037 - US/Canada Latin 1 EBCDIC) mqMessage.characterSet = 37; // Add the message payload mqMessage.writeString("A message generated using the IBM MQ classes for Java."); // Include a user defined message property mqMessage.setStringProperty("myMessagePropertyName", "myMessagePropertyValue"); When this message is inspected on the queue, the body of the message was seen to be encoded in CCSID 1208 (UTF-8), and not the CCSID 37 which had been expected. It should be noted that the message is still a well formed MQ message - in that the RFH2 header which defined the CCSID of the message body correctly specified the message body as being encoded in CCSID 1208 - it is just not in the character encoding which the application had specified on the com.ibm.mq.MQMessage object. If the user defined message property is not set on the message, then the message body character data is encoded in the application requested CCSID, which would be CCSID 37 in the above example.
Problem conclusion
The MQ classes for Java API has been updated to provide a mechanism by which the CCSID of the message as configured by the application will be used as the character encoding for the body of the message. To avoid a change of behaviour being experienced by an existing application, this default value of this property is set to retain the existing behaviour - that is to say if a message property is included in the message, then the message body will be encoded in CCSID 1208. To enable this new behaviour where the message body is encoded using the specified CCSID, use the following Java System property and value: com.ibm.mq.enableWriteMessageBodyUsingCCSIDInLastHeader=true --------------------------------------------------------------- The fix is targeted for delivery in the following PTFs: Version Maintenance Level v9.1 LTS 9.1.0.15 v9.2 LTS 9.2.0.7 v9.3 LTS 9.3.0.2 v9.x CD 9.3.1 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
IT34707
Reported component name
IBM MQ BASE MP
Reported component ID
5724H7271
Reported release
910
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2020-10-28
Closed date
2022-09-07
Last modified date
2023-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 MP
Fixed component ID
5724H7271
Applicable component levels
[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"910","Line of Business":{"code":"LOB45","label":"Automation"}}]
Document Information
Modified date:
08 March 2023