WebSphere MQ调用失败,代码为';2';(';MQCC#U失败';)原因';2397';(';MQRC#U JSSE#U错误';)在使用jetty配置进行MQ连接时
我正在jetty-env.xml文件中将MQ连接配置为:WebSphere MQ调用失败,代码为';2';(';MQCC#U失败';)原因';2397';(';MQRC#U JSSE#U错误';)在使用jetty配置进行MQ连接时,jetty,ibm-mq,Jetty,Ibm Mq,我正在jetty-env.xml文件中将MQ连接配置为: <New id="myJmsConnection" class="org.eclipse.jetty.plus.jndi.Resource"> <Arg><Ref refid="wac"/></Arg> <Arg>jms/mymq</Arg> <Arg> <New class="com.ibm.mq.jm
<New id="myJmsConnection" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg><Ref refid="wac"/></Arg>
<Arg>jms/mymq</Arg>
<Arg>
<New class="com.ibm.mq.jms.MQConnectionFactory">
<Set name="connectionNameList">x.x.x.x</Set>
<Set name="port">xxx</Set>
<Set name="queueManager">xxx</Set>
<Set name="channel">xxx.CHANNEL</Set>
<Set name="transportType">1</Set>
<Set name="SSLCipherSuite">xxxx</Set>
</New>
</Arg>
</New>
我的问题是,为什么连接可以从Java代码中工作,但在jetty env.xml中配置时会引发MQ异常?这表明jetty环境(我不熟悉)没有正确设置JSSE环境。您是否有任何未添加到问题中的其他错误信息?请发布错误的完整堆栈。您确定您的独立应用程序和jetty在路径中都有完全相同的MQ相关jar文件吗?您正在使用哪个特定版本的MQ jar文件?如果在linux系统上,可以使用
unzip-pcom.ibm.mq.jar META-INF/MANIFEST.MF | grep-i实现版本
获得该版本。这是什么类型的JRE(例如:IBM、Oracle、OpenJDK)。您指定的具体SSLCipherSuite是什么?如果整个堆栈没有提供有助于解决此问题的信息,您可以通过设置java系统属性javax.net.debug=all
来提供TLS调试信息,例如,将以下内容添加到java启动命令-Djavax.net.debug=all
。这与在这个问题上。请以后小心标签。Vishal,你对我们的后续问题有什么进一步的意见吗?您是否能够解决该问题,如果能够,请发布一个答案,说明该解决方案是为了帮助将来遇到相同问题的人。
@Bean(name="MQConnectionFactory")
public ConnectionFactory connectionFactory() {
if (factory == null) {
factory = new MQConnectionFactory();
try {
factory.setConnectionNameList(env.getRequiredProperty(HOST));
factory.setPort(Integer.parseInt(env.getRequiredProperty(PORT)));
factory.setQueueManager(env.getRequiredProperty(QUEUE_MANAGER));
factory.setChannel(env.getRequiredProperty(CHANNEL));
factory.setTransportType(WMQConstants.WMQ_CM_CLIENT);
factory.setSSLCipherSuite(env.getRequiredProperty(SSL_CIPHER_SUITE));
factory.setStringProperty(WMQConstants.USERID, env.getRequiredProperty(QUEUE_USERID));
factory.setStringProperty(WMQConstants.PASSWORD, env.getRequiredProperty(QUEUE_PASSWORD));
} catch (JMSException e) {
throw new RuntimeException(e);
}
}
return factory;
}