Fixes are available
APAR status
Closed as program error.
Error description
When using the WebSphere MQ JMS API to put messages which were got from a queue using character set ID 1200, the following error is written to the application server log: JMSCMQ1006: The value for 'JMS_IBM_Character_Set':'UnicodeLittle' is not valid. The value 'UnicodeLittle' for property 'JMS_IBM_Character_Set' is not correct. Check the linked WebSphere MQ exception reason and completion code. Additional Symptom(s) Search Keyword(s): KIXREVxxx
Local fix
Use character set ID 1208 (UTF-8) to write messages to the queue.
Problem summary
**************************************************************** USERS AFFECTED: This issue affects 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. who have applications which receive JMS TextMessages from a WebSphere MQ queue, where the message data has been encoded using Coded Character Set Identifier (CCSID) 1200, 13488 or 17584 (the UCS-2 family of character encodings) and then send that JMS message to another queue using the WebSphere MQ classes for JMS API. Platforms affected: All Distributed (iSeries, all Unix and Windows) +Java +Java zOS **************************************************************** PROBLEM SUMMARY: When a JMS application reads a message from a WebSphere MQ queue using the WebSphere MQ classes for JMS API, and the message is of JMS TextMessage type where the CCSID of the message was one of: 1200 13488 17584 the WebSphere MQ message byte order property "Encoding" is read to determine the byte order of the character data, as documented within the product documentation: http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ib m.mq.csqzak.doc/fr14620_.htm under the statement: "For the UCS-2 character sets, the encoding (byte order) of the NameValueData must be the same as the encoding of the other fields in the MQRFH2 structure" The constructed JMS message contains a property which declares the encoding of the data: JMS_IBM_Character_Set For this set of message CCSID values, 1200, 13488 and 17584, this JMS property would contain the values: UnicodeBig (for Encoding = 0x111 or int 273) UnicodeBigMarked (with property from IV08982) UnicodeLittle (for Encoding = 0x222 or int 546) The problem was that these JMS_IBM_Character_Set values were used to encode the data back into a byte form when sending a message to a WebSphere MQ queue. The class which maps Java names to IBM CCSID numbers did not recognise these names, resulting in an exception of the form: (stack trace from the WebSphere MQ classes for JMS v7.0.1.9) com.ibm.msg.client.jms.DetailedJMSException: JMSCMQ1006: The value for 'JMS_IBM_Character_Set':'UnicodeLittle' is not valid. The value 'UnicodeLittle' for property 'JMS_IBM_Character_Set' is not correct. Check the linked WebSphere MQ exception reason and completion code. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeCons tructorAccessorImpl.java:56) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Delega tingConstructorAccessorImpl.java:39) at java.lang.reflect.Constructor.newInstance(Constructor.java:527) at com.ibm.msg.client.commonservices.j2se.NLSServices.createExcepti on(NLSServices.java:313) at com.ibm.msg.client.commonservices.nls.NLSServices.createExceptio n(NLSServices.java:388) at com.ibm.msg.client.wmq.common.internal.messages.WMQMarshalUtils. calculateMessageBodyCcsid(WMQMarshalUtils.java:716) at com.ibm.msg.client.wmq.common.internal.messages.WMQSendMarshal.c onstructMessageBuffers(WMQSendMarshal.java:138) at com.ibm.msg.client.wmq.common.internal.messages.WMQSendMarshal.e xportMQMDAndMessageBuffers(WMQSendMarshal.java:496) at com.ibm.msg.client.wmq.common.internal.messages.WMQSendMarshal.e xportMQMD(WMQSendMarshal.java:555) at com.ibm.msg.client.wmq.internal.WMQMessageProducer $ProducerShadow.send(WMQMessageProducer.java:524) at com.ibm.msg.client.wmq.internal.WMQMessageProducer.send (WMQMessageProducer.java:1223) at com.ibm.msg.client.jms.internal.JmsMessageProducerImpl.sendMessa ge(JmsMessageProducerImpl.java:935) at com.ibm.msg.client.jms.internal.JmsMessageProducerImpl.send_ (JmsMessageProducerImpl.java:787) at com.ibm.msg.client.jms.internal.JmsMessageProducerImpl.send (JmsMessageProducerImpl.java:442) at com.ibm.mq.jms.MQMessageProducer.send (MQMessageProducer.java:304) ... ... ... This exception was thrown back to the calling application, and the message send failed.
Problem conclusion
The WebSphere MQ classes for JMS code to manage the receiving of messages which are encoded in one of the CCSID values: 1200 13488 17584 was modified such that the values stored in the JMS message's property: JMS_IBM_Character_Set is one of: "UTF-16LE" (for Encoding = 0x111) "UTF-16" (for Encoding = 0x222) instead of the previously used names: "UnicodeLittle" (for Encoding = 0x111) "UnicodeBig" (for Encoding = 0x222) Note that the current convention for CCSID mapping used outside of the WebSphere MQ environment is: CCSID 1200 = UTF-16 big endian encoded CCSID 1202 = UTF-16 Little endian encoded CCSID 1204 = UTF-16 with byte order mark Because this interpretation differs from that used by WebSphere MQ, an additional property has been added to the WebSphere MQ classes for JMS to enable compatibility with other resources. By default this property is disabled to maintain behaviour for WebSphere MQ according with its documentation. To change this behaviour, the property and value to enable the alternative function is: com.ibm.mq.cfg.CCSID.MapUtf16ByteOrderByCCSID=YES When this is enabled, the WebSphere MQ message's property 'Encoding' is not used to determine the byte order of the character data. The result of this is that the WebSphere MQ message's CCSID is solely used to decode the byte data into character form. For example, a message encoded in CCSID 1200 will always be decoded using the "UTF-16" Java Character set encoding, independent of WebSphere MQ messages 'Encoding' property. --------------------------------------------------------------- The fix is targeted for delivery in the following: v7.0 Platform Fix Pack 7.0.1.12 -------- -------------------- Windows 7.0.1.12 AIX 7.0.1.12 HP-UX (PA-RISC) 7.0.1.12 HP-UX (Itanium) 7.0.1.12 Solaris (SPARC) 7.0.1.12 Solaris (x86-64) 7.0.1.12 iSeries 7.0.1.12 Linux (x86) 7.0.1.12 Linux (x86-64) 7.0.1.12 Linux (zSeries) 7.0.1.12 Linux (Power) 7.0.1.12 zOS 7.0.1.12 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 Version v7.5 -------- -------------------- Fix available in: 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
IV40180
Reported component name
WMQ LIN X86-64
Reported component ID
5724H7230
Reported release
701
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2013-04-18
Closed date
2013-05-31
Last modified date
2013-08-19
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
R701 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.1"}]
Document Information
Modified date:
03 October 2021