APAR status
Closed as program error.
Error description
An IBM MQ classes for JMS application is attempting to connect to a queue manager running on an AIX system, using a default queue manager CCSID of 819, by calling the JMS method: javax.jms.ConnectionFactory.createConnection("wasadmin", "myPassword"); The JVM is running in a Turkish locale. This fails to connect to the queue manager with an javax.jms.JMSException being thrown by the method call, with the following message and Java stack: com.ibm.msg.client.jms.DetailedIllegalStateException: JMSWMQ0018: Failed to connect to queue manager 'myQMGR' with connection mode 'Client' and host name 'myhost.mydomain(1414)'. Check the queue manager is started and if running in client mode, check there is a listener running. Please see the linked exception for more information. at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException at com.ibm.msg.client.wmq.common.internal.Reason.createException at com.ibm.msg.client.wmq.internal.WMQConnection.<init> at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7Pr oviderConnection at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProv iderConnection at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl._createCon nection at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConn ection at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection at com.ibm.mq.jms.MQConnectionFactory.createConnection at MyApplication.myMethod Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2330' ('MQRC_CODED_CHAR_SET_ID_ERROR'). at com.ibm.msg.client.wmq.common.internal.Reason.createException ... 9 more Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2330;AMQ9204: Connection to host 'myhost.mydomain(1414)' rejected. [1=com.ibm.mq.jmqi.JmqiException[CC=2;RC=2330;AMQ6047: Conversion not supported. [1=1200 (UCS2),2=819(ISO-8859-1) Unmappable Action: REPORT Unmappable Replacement: 63]],3=myhost.mydomain(1414),5=JmqiDC.writeFieldDC] at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect at com.ibm.mq.ese.jmqi.InterceptedJmqiImpl.jmqiConnect at com.ibm.mq.ese.jmqi.ESEJMQI.jmqiConnect at com.ibm.msg.client.wmq.internal.WMQConnection.<init> ... 8 more Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2330;AMQ6047: Conversion not supported. [1=1200 (UCS2),2=819(ISO-8859-1) Unmappable Action: REPORT Unmappable Replacement: 63] at com.ibm.mq.jmqi.internal.JmqiDC.writeFieldDC at com.ibm.mq.jmqi.internal.JmqiDC.writeField at com.ibm.mq.jmqi.internal.JmqiDC.writeField at com.ibm.mq.jmqi.remote.rfp.RfpUID.setUserIdentifier at com.ibm.mq.jmqi.remote.impl.RemoteConnection.sendUidFlow at com.ibm.mq.jmqi.remote.impl.RemoteConnection.initSess at com.ibm.mq.jmqi.remote.impl.RemoteConnection.connect at com.ibm.mq.jmqi.remote.impl.RemoteConnectionSpecification.getSes sionFromNewConnection at com.ibm.mq.jmqi.remote.impl.RemoteConnectionSpecification.getSes sion at com.ibm.mq.jmqi.remote.impl.RemoteConnectionPool.getSession at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect ... 12 more No error messages are reported in the queue manager logs, and it is very difficult to determine the problem from the information provided in the JMSException.
Local fix
Use the following runmqsc command on the queue manager: ALTER QMGR CCSID(xxx) to change the queue manager CCSID to one that supports the characters being used in the user identifier.
Problem summary
**************************************************************** USERS AFFECTED: Users of the IBM MQ classes for Java or IBM MQ classes for JMS, who are connecting to a remote queue manager which is running in CCSID for which the user identifier which is going to be flowed from the Java/JMS application to the queue manager cannot be represented. Platforms affected: MultiPlatform **************************************************************** PROBLEM DESCRIPTION: When a IBM MQ classes for Java/JMS application connects to a queue manager, depending on the configuration of the system a "user identifier" flow may be sent from the application to the queue manager. For example, when using the IBM MQ classes for JMS v8.0, when the following JMS method is made: javax.jms.ConnectionFactory.createConnection("userid", "password"); in the default configuration as part of the connection process to the remote queue manager, the user identifier: "userid" is converted to uppercase, and then encoded using the queue manager's CCSID character encoding scheme to be flowed over TCP/IP. It is possible that the characters which are attempting to be flowed cannot be represented in the queue manager's CCSID. An example of this is when the JVM is running in the Turkish locale, such as when the JVM was started on a system running in a Turkish locale, or with the argument: -Duser.language=tr and the user identifier contain's a lower case "i" character. When this is uppercased by the JVM, the lower case 'i' character: U+0069 "Latin Small Letter I" is converted to the upper case character: U+0130 "Latin Capital Letter I with Dot Above" which is not representable in CCSID 819, a common CCSID for an AIX queue manager to be running in. This results in the conversion from characters to a CCSID 819 encoded byte stream to fail, which in turn fails the connection attempt. When this occurs the JMSException which is returned contains the information: Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2330;AMQ6047: Conversion not supported. [1=1200 (UCS2),2=819(ISO-8859-1) Unmappable Action: REPORT Unmappable Replacement: 63] As the application user, this message provided very limited information as to what the problem was.
Problem conclusion
A new message has been added to MQ, which provides more information as to the problem. This message is: AMQ9567: Unable to convert the user identifier 'USER?D' into bytes, using the queue manager requested CCSID '819'. [2=819,3=USER?D]],3=myhost.mydomain(1414),5=RfpUID.setUserIdenti fier] This message is intended to provide sufficient information to gain insight into the specific character string which cannot be converted. An example JMSException stack would now be of the form: com.ibm.msg.client.jms.DetailedIllegalStateException: JMSWMQ0018: Failed to connect to queue manager 'myQMGR' with connection mode 'Client' and host name 'myhost.mydomain(1414)'. Check the queue manager is started and if running in client mode, check there is a listener running. Please see the linked exception for more information. at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException at com.ibm.msg.client.wmq.common.internal.Reason.createException at com.ibm.msg.client.wmq.internal.WMQConnection.<init> at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7Pr oviderConnection at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProv iderConnection at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl._createCon nection at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConn ection at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection at com.ibm.mq.jms.MQConnectionFactory.createConnection at MyApplication.myMethod Caused by: com.ibm.mq.MQException: JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2330' ('MQRC_CODED_CHAR_SET_ID_ERROR'). at com.ibm.msg.client.wmq.common.internal.Reason.createException ... 9 more Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2330;AMQ9204: Connection to host 'myhost.mydomain(1414)' rejected. [1=com.ibm.mq.jmqi.JmqiException[CC=2;RC=2330;AMQ9567: Unable to convert the user identifier 'USER?D' into bytes, using the queue manager requested CCSID '819'. [2=819,3=USER?D]],3=myhost.mydomain(1414),5=RfpUID.setUserIdenti fier] at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect at com.ibm.mq.ese.jmqi.InterceptedJmqiImpl.jmqiConnect at com.ibm.mq.ese.jmqi.ESEJMQI.jmqiConnect at com.ibm.msg.client.wmq.internal.WMQConnection.<init> ... 8 more Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2330;AMQ9567: Unable to convert the user identifier 'USER?D' into bytes, using the queue manager requested CCSID '819'. [2=819,3=USER?D] at com.ibm.mq.jmqi.remote.rfp.RfpUID.setUserIdentifier at com.ibm.mq.jmqi.remote.impl.RemoteConnection.sendUidFlow at com.ibm.mq.jmqi.remote.impl.RemoteConnection.initSess at com.ibm.mq.jmqi.remote.impl.RemoteConnection.connect at com.ibm.mq.jmqi.remote.impl.RemoteConnectionSpecification.getSes sionFromNewConnection at com.ibm.mq.jmqi.remote.impl.RemoteConnectionSpecification.getSes sion at com.ibm.mq.jmqi.remote.impl.RemoteConnectionPool.getSession at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect ... 12 more Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2330;AMQ6047: Conversion not supported. [1=java.lang.String,2=819(ISO-8859-1) Unmappable Action: REPORT, Unmappable Replacement: 63, spaceByte: 32] at com.ibm.mq.jmqi.internal.JmqiDC.writeFieldDC at com.ibm.mq.jmqi.internal.JmqiDC.writeField at com.ibm.mq.jmqi.internal.JmqiDC.writeField at com.ibm.mq.jmqi.remote.rfp.RfpUID.setUserIdentifier ... 19 more Caused by: java.nio.charset.UnmappableCharacterException: Input length = 1 at java.nio.charset.CoderResult.throwException at java.nio.charset.CharsetEncoder.encode at com.ibm.mq.jmqi.system.JmqiCodepage.stringToBytes at com.ibm.mq.jmqi.internal.JmqiDC.writeFieldDC ... 22 more Note that this APAR is not resolving the problem of not being able to connect to the queue manager - this requires a change to the system to permit the user identifier to be encoded, such as changing the queue manager CCSID to one which supports the uppercase variant of the specified user identifier string. --------------------------------------------------------------- The fix is targeted for delivery in the following PTFs: Version Maintenance Level v8.0 8.0.0.11 v9.0 LTS 9.0.0.6 v9.1 CD 9.1.1 v9.1 LTS 9.1.0.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
IT25917
Reported component name
IBM MQ BASE M/P
Reported component ID
5724H7261
Reported release
900
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2018-08-08
Closed date
2018-09-05
Last modified date
2018-09-05
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 M/P
Fixed component ID
5724H7261
Applicable component levels
[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"9.0","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]
Document Information
Modified date:
05 September 2018