IT10863: WEBSPHERE MQ CLASSES FOR JAVA/JMS APPLICATIONS CAN NOT USE CCDT FILES GENERATED ON A NEWER LEVEL QUEUE MANAGER
Closed as program error.
A IBM MQ Queue Manager v8.0 is used to generate a CCDT file, which is then shared with an application which uses the WebSphere MQ classes for JMS v7.1. The application is unable to connect to the queue manager using this CCDT file. An exception is generated by the WebSphere MQ classes for JMS when attempting to create a JMS Connection from the ConnectionFactory which is configured to use the CCDT, with the following caused by stack: Caused by: java.lang.ArrayIndexOutOfBoundsException at java.lang.System.arraycopy(Native Method) at com.ibm.mq.exits.MQCD.readFromBuffer(MQCD.java:4373) at com.ibm.mq.jmqi.system.internal.CCDT.processMQCDRecord(CCDT.java :648) ... 14 more When this exception is seen, the connection is not established with the queue manager.
Generate the CCDT on a queue manager major version (version and release) which is less than or equal to the WebSphere MQ classes for JMS version.
**************************************************************** USERS AFFECTED: Users of WebSphere MQ classes for Java/JMS who are using a CCDT (Client Channel Definition Table) which was generated on a later (eg. version 8.0) queue manager with an earlier major version of the of the WebSphere MQ classes for Java/JMS (eg. version 7.0, 7.1 or 7.5). Platforms affected: AIX, HP-UX Itanium, HP-UX PA-RISC, IBM iSeries, Linux on Power, Linux on S390, Linux on x86, Linux on x86-64, Windows, Solaris x86-64, Solaris SPARC, Linux on zSeries, z/OS, MultiPlatform **************************************************************** PROBLEM DESCRIPTION: The algorithm which was used by the WebSphere MQ classes for Java/JMS was unable to correctly parse a CCDT file which was generated on a version 8 queue manager. The exact failure varied across product versions depending upon the content of the CCDT file. For example, a CCDT file generated on IBM MQ v8.0 and accessed by the WebSphere MQ classes for Java/JMS v7.0 may have appeared to show no problem when used to connect to the queue manager - even though some of the data contained within the CCDT has not been parsed correctly. The same CCDT file on WebSphere MQ classes for Java/JMS v7.1/v7.5 threw an exception when connecting to the queue manager. For example a stack from the v126.96.36.199 version of the JMS classes has an exception of the form: com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ2020: Failed to connect to queue manager 'MY_QM' with connection mode 'Client' and supplied CCDT URL 'file:/tmp/AMQCLCHL.TAB', see linked exception for more information. 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( Reason.java:580) at com.ibm.msg.client.wmq.common.internal.Reason.createException(Re ason.java:216) at com.ibm.msg.client.wmq.internal.WMQConnection.(WMQConnection.jav a:426) at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7Pr oviderConnection(WMQConnectionFactory.java:6770) at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProv iderConnection(WMQConnectionFactory.java:6152) at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConn ection(JmsConnectionFactoryImpl.java:285) at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConn ectionFactory.java:6126) at com.ibm.mq.jms.MQConnectionFactory.createConnection(MQConnection Factory.java:6155) ... ... Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2278' ('MQRC_CLIENT_CONN_ERROR'). at com.ibm.msg.client.wmq.common.internal.Reason.createException(Re ason.java:204) ... 8 more Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2278;AMQ9555: File format error. [3=file:/tmp/AMQCLCHL.TAB] at com.ibm.mq.jmqi.system.internal.CCDT.processMQCDRecord(CCDT.java :659) at com.ibm.mq.jmqi.system.internal.CCDT.parse(CCDT.java:441) at com.ibm.mq.jmqi.system.internal.CCDT.(CCDT.java:203) at com.ibm.mq.jmqi.remote.impl.RemoteCCDT.(RemoteCCDT.java:69) at com.ibm.mq.jmqi.remote.api.RemoteFAP.getCcdt(RemoteFAP.java:449) at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java: 1621) at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java: 1345) at com.ibm.msg.client.wmq.internal.WMQConnection.(WMQConnection.jav a:345) ... 7 more Caused by: java.lang.ArrayIndexOutOfBoundsException at java.lang.System.arraycopy(Native Method) at com.ibm.mq.exits.MQCD.readFromBuffer(MQCD.java:4373) at com.ibm.mq.jmqi.system.internal.CCDT.processMQCDRecord(CCDT.java :648) ... 14 more When this exception was thrown, the connection was not established with the queue manager.
The WebSphere MQ classes for Java/JMS was modified to update the algorithm which is used to parse the CCDT file. This allows earlier versions of the Java/JMS API to tolerate CCDT files generated on later version queue managers. --------------------------------------------------------------- The fix is targeted for delivery in the following PTFs: Version Maintenance Level v7.0 188.8.131.52 v7.1 184.108.40.206 v7.5 220.127.116.11 v8.0 18.104.22.168 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 ---------------------------------------------------------------
Reported component name
WMQ WINDOWS V7
Reported component ID
NoSpecatt / Xsystem
Last modified date
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fixed component name
WMQ WINDOWS V7
Fixed component ID
Applicable component levels