Java 连接到安全IBM MQ时出错

Java 连接到安全IBM MQ时出错,java,ssl,ibm-mq,Java,Ssl,Ibm Mq,我们已经创建了一个JavaSwing项目来连接IBMMQS(安全和非安全)。我们正在使用RAD(IBM的V8.5库),在这个项目中,安全和非安全MQ连接都可以正常工作。但是,当我们创建一个可执行jar文件,捆绑所有必需的IBMJAR文件和SSL证书并运行它时,安全连接不起作用(使用可执行jar,非安全连接可以正常工作) 公共MQQueueManager mqConnect(字符串Qmanager、字符串主机名、字符串通道、int端口)引发异常{ 哈希表props=null; 试一试{ props

我们已经创建了一个JavaSwing项目来连接IBMMQS(安全和非安全)。我们正在使用RAD(IBM的V8.5库),在这个项目中,安全和非安全MQ连接都可以正常工作。但是,当我们创建一个可执行jar文件,捆绑所有必需的IBMJAR文件和SSL证书并运行它时,安全连接不起作用(使用可执行jar,非安全连接可以正常工作)

公共MQQueueManager mqConnect(字符串Qmanager、字符串主机名、字符串通道、int端口)引发异常{ 哈希表props=null; 试一试{ props=setsslkystore(“dev-cert.jks”,“密码”); MQEnvironment.hostname=主机名; MQEnvironment.channel=通道; MQEnvironment.port=端口; if(信道等于(安全信道)){ MQEnvironment.sslCipherSuite=“TLS\u RSA\u WITH_AES\u 128\u CBC\u SHA”; }否则{ MQEnvironment.sslCipherSuite=“”; } MQEnvironment.properties.put(MQC.TRANSPORT_属性,MQC.TRANSPORT_MQSERIES_客户端); MQQueueManager MQQueueManager=(props!=null)?新建MQQueueManager(Qmanager,props):新建MQQueueManager(Qmanager); 返回mqQueueManager; }捕获(MQException mqExp){ mqExp.printStackTrace(); 返回null; } } 私有哈希表setsslkystore(字符串文件名、字符串密码){ Hashtable props=新的Hashtable(); 试一试{ KeyStore ks=KeyStore.getInstance(“JKS”); load(新文件输入流(fileName),password.tocharray()); KeyManagerFactory kmf=KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); init(ks,password.toCharArray()); KeyStore ts=KeyStore.getInstance(“JKS”); 加载(新的FileInputStream(fileName),password.tocharray()); TrustManagerFactory tmf=TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); tmf.init(ts); SSLContext SSLContext=SSLContext.getInstance(“SSL”); sslContext.init(kmf.getKeyManager(),tmf.getTrustManager(),null); put(MQC.SSL_SOCKET_FACTORY_属性,sslContext.getSocketFactory()); 返回道具; }捕获(例外e){ e、 printStackTrace();返回null; } } 我需要知道这里可能有什么问题。这是个例外

com.ibm.mq.MQException: MQJE001: An MQException occurred: Completion Code 2, Reason 2009
MQJE016: MQ queue manager closed channel immediately during connect
Closure reason = 2009
    at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:276)
    at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:301)
       at com.ibm.mq.MQClientManagedConnectionFactoryJ11.createManagedConnection(MQClientManagedConnectionFactoryJ11.java:323)
       at com.ibm.mq.StoredManagedConnection.<init>(StoredManagedConnection.java:84)
       at com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:173)
       at com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:795)
       at com.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:709)
       at com.ibm.mq.MQQueueManagerFactory.constructQueueManager(MQQueueManagerFactory.java:664)
       at com.ibm.mq.MQQueueManagerFactory.createQueueManager(MQQueueManagerFactory.java:160)
       at com.ibm.mq.MQQueueManager.<init>(MQQueueManager.java:554)
       at com.mqutility.util.QueueOperations.mqConnect(QueueOperations.java:149)
       at com.mqutility.main.QueueEditor$1.actionPerformed(QueueEditor.java:158)
       at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
       at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
       at java.awt.EventQueue$4.run(EventQueue.java:720)
       at java.awt.EventQueue$4.run(EventQueue.java:718)
       at java.security.AccessController.doPrivileged(Native Method)
       at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
       at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
       at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
       at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
       at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
       at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
       at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
       at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: com.ibm.mqservices.MQInternalException: MQJE001: An MQException occurred: Completion Code 2, Reason 2009
MQJE016: MQ queue manager closed channel immediately during connect
Closure reason = 2009
       at com.ibm.mq.MQv6InternalCommunications.checkControlFlags(MQv6InternalCommunications.java:769)
       at com.ibm.mq.MQv6InternalCommunications.establishChannel(MQv6InternalCommunications.java:665)
       at com.ibm.mq.MQv6InternalCommunications.initialize(MQv6InternalCommunications.java:218)
       at com.ibm.mq.MQv6InternalCommunications.<init>(MQv6InternalCommunications.java:111)
       at com.ibm.mq.MQSESSIONClient.MQCONNX(MQSESSIONClient.java:1458)
       at com.ibm.mq.MQSESSIONClient.MQCONN(MQSESSIONClient.java:1369)
       at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:252)
com.ibm.mq.MQException:MQJE001:发生MQException:完成代码2,原因2009
MQJE016:MQ队列管理器在连接期间立即关闭通道
关闭原因=2009年
位于com.ibm.mq.MQManagedConnectionJ11。(MQManagedConnectionJ11.java:276)
在com.ibm.mq.MQClientManagedConnectionFactoryJ11.\u createManagedConnection(MQClientManagedConnectionFactoryJ11.java:301)
位于com.ibm.mq.MQClientManagedConnectionFactoryJ11.createManagedConnection(MQClientManagedConnectionFactoryJ11.java:323)
位于com.ibm.mq.StoredManagedConnection(StoredManagedConnection.java:84)
位于com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:173)
位于com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:795)
位于com.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:709)
位于com.ibm.mq.MQQueueManagerFactory.constructQueueManager(MQQueueManagerFactory.java:664)
位于com.ibm.mq.MQQueueManagerFactory.createQueueManager(MQQueueManagerFactory.java:160)
位于com.ibm.mq.MQQueueManager。(MQQueueManager.java:554)
位于com.mqutility.util.QueueOperations.mqConnect(QueueOperations.java:149)
位于com.mqutility.main.QueueEditor$1.actionPerformed(QueueEditor.java:158)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
在java.awt.EventQueue$4.run(EventQueue.java:720)
在java.awt.EventQueue$4.run(EventQueue.java:718)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
位于java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
在java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:161)
位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:150)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
在java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
原因:com.ibm.mqservices.MQInternalException:MQJE001:发生MQException:完成代码2,原因2009
MQJE016:MQ队列管理器在连接期间立即关闭通道
关闭原因=2009年
位于com.ibm.mq.MQv6InternalCommunications.checkControlFlags(MQv6InternalCommunications.java:769)
在com.ibm.mq.MQv6InternalCommunications.buildingchannel上(MQv6InternalCommunications.java:665)
位于com.ibm.mq.MQv6InternalCommunications.initialize(MQv6InternalCommunications.java:218)
位于com.ibm.mq.MQv6InternalCommunications。(MQv6InternalCommunications.java:111)
位于com.ibm.mq.MQSESSIONClient.MQCONNX(MQSESSIONClient.java:1458)
位于com.ibm.mq.MQSESSIONClient.MQCONN(MQSESSIONClient.java:1369)
位于com.ibm.mq.MQManagedConnectionJ11。(MQManagedConnectionJ11.java:252)

这个问题问得好,但对这个地方来说可能太具体了。如果您在这里没有收到有用的答案,我建议您尝试在IBM devworks的某个mq论坛上发布。当您的客户端应用程序收到此2009错误时,队列管理器的
AMQERR01.LOG
显示了什么?@JoshMc完全正确,您的答案将在队列管理器的错误日志中找到。没有这些信息,我们只能猜测w
com.ibm.mq.MQException: MQJE001: An MQException occurred: Completion Code 2, Reason 2009
MQJE016: MQ queue manager closed channel immediately during connect
Closure reason = 2009
    at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:276)
    at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:301)
       at com.ibm.mq.MQClientManagedConnectionFactoryJ11.createManagedConnection(MQClientManagedConnectionFactoryJ11.java:323)
       at com.ibm.mq.StoredManagedConnection.<init>(StoredManagedConnection.java:84)
       at com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:173)
       at com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:795)
       at com.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:709)
       at com.ibm.mq.MQQueueManagerFactory.constructQueueManager(MQQueueManagerFactory.java:664)
       at com.ibm.mq.MQQueueManagerFactory.createQueueManager(MQQueueManagerFactory.java:160)
       at com.ibm.mq.MQQueueManager.<init>(MQQueueManager.java:554)
       at com.mqutility.util.QueueOperations.mqConnect(QueueOperations.java:149)
       at com.mqutility.main.QueueEditor$1.actionPerformed(QueueEditor.java:158)
       at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
       at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
       at java.awt.EventQueue$4.run(EventQueue.java:720)
       at java.awt.EventQueue$4.run(EventQueue.java:718)
       at java.security.AccessController.doPrivileged(Native Method)
       at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
       at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
       at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
       at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
       at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
       at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
       at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
       at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: com.ibm.mqservices.MQInternalException: MQJE001: An MQException occurred: Completion Code 2, Reason 2009
MQJE016: MQ queue manager closed channel immediately during connect
Closure reason = 2009
       at com.ibm.mq.MQv6InternalCommunications.checkControlFlags(MQv6InternalCommunications.java:769)
       at com.ibm.mq.MQv6InternalCommunications.establishChannel(MQv6InternalCommunications.java:665)
       at com.ibm.mq.MQv6InternalCommunications.initialize(MQv6InternalCommunications.java:218)
       at com.ibm.mq.MQv6InternalCommunications.<init>(MQv6InternalCommunications.java:111)
       at com.ibm.mq.MQSESSIONClient.MQCONNX(MQSESSIONClient.java:1458)
       at com.ibm.mq.MQSESSIONClient.MQCONN(MQSESSIONClient.java:1369)
       at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:252)