Ibm mq IBM MQ调用失败,代码为';2';(';MQCC#U失败';)原因';2059';

Ibm mq IBM MQ调用失败,代码为';2';(';MQCC#U失败';)原因';2059';,ibm-mq,Ibm Mq,我正在尝试向IBM MQ(版本:9.0.0.0)发送一条消息,代码如下。 *我已尝试使用\而不使用用户名和密码。当我在我的机器(localhost)上安装IBM MQ时尝试相同的代码时,它工作得很顺利 private static void foo() throws JMSException { Request request = new Request(); request.setRequestKey("11-12347"); request.s

我正在尝试向IBM MQ(版本:9.0.0.0)发送一条消息,代码如下。
*我已尝试使用\而不使用用户名和密码。当我在我的机器(localhost)上安装IBM MQ时尝试相同的代码时,它工作得很顺利

private static void foo() throws JMSException {
        Request request = new Request();
        request.setRequestKey("11-12347");
        request.setQueryString("This is a query string!");

        MQQueueConnectionFactory cf = new MQQueueConnectionFactory();
        cf.setHostName("192.168.1.107");
        cf.setPort(1414);
        cf.setAppName("WMQ Tester");
//        cf.createConnection(sccsid, sccsid)
        cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);
        cf.setQueueManager("SanctionManager");
        cf.setChannel("system.def.sanction");

        MQQueueConnection connection = (MQQueueConnection) cf.createQueueConnection("hanash", "hanash1");
        MQQueueSession session = (MQQueueSession) connection.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);

        MQQueue queue = (MQQueue) session.createQueue("queue:///SanctionQueue");
        MQQueueSender sender = (MQQueueSender) session.createSender(queue);

        ObjectMessage objectMessage = session.createObjectMessage(request);
        connection.start();
        sender.send(objectMessage);
        session.commit();

    }
这就产生了以下例外情况:

Exception in thread "main" com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ0018: Failed to connect to queue manager 'SanctionManager' with connection mode 'Client' and host name '192.168.1.107(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(Reason.java:595)
    at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:215)
    at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:422)
    at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:8475)
    at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:7814)
    at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl._createConnection(JmsConnectionFactoryImpl.java:299)
    at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConnection(JmsConnectionFactoryImpl.java:236)
    at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6024)
    at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:136)
    at com.dgbi.cre.MQSample.foo(MQSample.java:135)
    at com.dgbi.cre.MQSample.main(MQSample.java:63)
Caused by: com.ibm.mq.MQException: JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2195' ('MQRC_UNEXPECTED_ERROR').
    at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:203)
    ... 9 more
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2195;AMQ9204: Connection to host '192.168.1.107(1414)' rejected. [1=com.ibm.mq.jmqi.JmqiException[CC=2;RC=2195;AMQ6047: Conversion not supported. [1=720,5=???]],3=192.168.1.107(1414),5=RemoteConnection.initSess]
    at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:2280)
    at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1285)
    at com.ibm.mq.ese.jmqi.InterceptedJmqiImpl.jmqiConnect(InterceptedJmqiImpl.java:376)
    at com.ibm.mq.ese.jmqi.ESEJMQI.jmqiConnect(ESEJMQI.java:563)
    at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:355)
    ... 8 more
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2195;AMQ6047: Conversion not supported. [1=720,5=???]
    at com.ibm.mq.jmqi.remote.impl.RemoteConnection.initSess(RemoteConnection.java:1282)
    at com.ibm.mq.jmqi.remote.impl.RemoteConnection.connect(RemoteConnection.java:863)
    at com.ibm.mq.jmqi.remote.impl.RemoteConnectionSpecification.getSessionFromNewConnection(RemoteConnectionSpecification.java:409)
    at com.ibm.mq.jmqi.remote.impl.RemoteConnectionSpecification.getSession(RemoteConnectionSpecification.java:305)
    at com.ibm.mq.jmqi.remote.impl.RemoteConnectionPool.getSession(RemoteConnectionPool.java:146)
    at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1721)
    ... 12 more
Caused by: java.io.UnsupportedEncodingException: 720
    at com.ibm.mq.jmqi.remote.impl.RemoteConnection.initSess(RemoteConnection.java:1268)
    ... 17 more
线程“main”com.ibm.msg.client.jms.DetailedJMSExException:JMSWMQ0018:无法连接到连接模式为“client”且主机名为“192.168.1.107(1414)”的队列管理器“SanctionManager”。
检查队列管理器是否已启动,如果在客户端模式下运行,请检查是否有侦听器正在运行。有关详细信息,请参阅链接的异常。
位于com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:595)
位于com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:215)
位于com.ibm.msg.client.wmq.internal.WMQConnection.(WMQConnection.java:422)
位于com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:8475)
位于com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:7814)
位于com.ibm.msg.client.jms.admin.jmsconnectionfactorympl.\u createConnection(jmsconnectionfactorympl.java:299)
位于com.ibm.msg.client.jms.admin.jmsconnectionfactorympl.createConnection(jmsconnectionfactorympl.java:236)
位于com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6024)
位于com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:136)
位于com.dgbi.cre.MQSample.foo(MQSample.java:135)
位于com.dgbi.cre.MQSample.main(MQSample.java:63)
原因:com.ibm.mq.MQException:JMSCMQ0001:ibm mq调用失败,代码为“2”(“MQCC_失败”)原因为“2195”(“MQRC_意外_错误”)。
位于com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:203)
... 9更多
原因:com.ibm.mq.jmqi.jmqi异常:CC=2;RC=2195;AMQ9204:与主机“192.168.1.107(1414)”的连接被拒绝。[1=com.ibm.mq.jmqi.JmqiException[CC=2;RC=2195;AMQ6047:不支持转换。[1=720,5=???],3=192.168.1.107(1414),5=RemoteConnection.initSess]
位于com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:2280)
位于com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1285)
在com.ibm.mq.ese.jmqi.InterceptedJmqiImpl.jmqiConnect(InterceptedJmqiImpl.java:376)
位于com.ibm.mq.ese.jmqi.ESEJMQI.jmqiConnect(ESEJMQI.java:563)
位于com.ibm.msg.client.wmq.internal.WMQConnection.(WMQConnection.java:355)
... 8个以上
原因:com.ibm.mq.jmqi.jmqi异常:CC=2;RC=2195;AMQ6047:不支持转换。[1=720,5=???]
位于com.ibm.mq.jmqi.remote.impl.RemoteConnection.initSess(RemoteConnection.java:1282)
位于com.ibm.mq.jmqi.remote.impl.RemoteConnection.connect(RemoteConnection.java:863)
位于com.ibm.mq.jmqi.remote.impl.RemoteConnectionSpecification.getSessionFromNewConnection(RemoteConnectionSpecification.java:409)
位于com.ibm.mq.jmqi.remote.impl.RemoteConnectionSpecification.getSession(RemoteConnectionSpecification.java:305)
位于com.ibm.mq.jmqi.remote.impl.RemoteConnectionPool.getSession(RemoteConnectionPool.java:146)
位于com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1721)
... 还有12个
原因:java.io.UnsupportedEncodingException:720
位于com.ibm.mq.jmqi.remote.impl.RemoteConnection.initSess(RemoteConnection.java:1268)
... 还有17个

这个例外意味着什么?我该怎么解决呢

异常中的关键错误是:

Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2195;AMQ6047: Conversion not supported. [1=720,5=???]
Caused by: java.io.UnsupportedEncodingException: 720
这似乎是IBM MQ v9.0.0.0中的一个已知问题,记录在以下APAR中:

此APAR在9.0.0.1中固定。我建议您使用当前LTS(长期支持)版本的9.0.0.3


如果查看APAR并与您的问题进行比较,区别在于您正在连接到使用CCSID 720(MSDOS阿拉伯语)设置的远程队列管理器。问题是您正在使用的Java JRE不支持此CCSID,并且由于一个缺陷,客户端没有尝试将CCSID重新协商为JRE支持的CCSID,连接失败,出现2195错误。

从JoshMC answer中读取:


解决此问题的一种方法是使用IBMJava版本构建应用程序。(我确实这么做了。)

谢谢你的回答。这使我解决了这个问题。