MQJMS2005异常无法创建MQQueueManager

时间:2012-02-20 14:07:01

标签: java-ee jms ibm-mq weblogic-10.x

在我的GetJMSMessage中,我使用了这个:

MQQueueConnectionFactory cf = new MQQueueConnectionFactory();
cf.setPort(port);
cf.setHostName(host);
cf.setChannel(channel);
cf.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
cf.setQueueManager(queuemanager);
conn = (MQQueueConnection)cf.createQueueConnection();

当我将我的课程作为独立应用程序运行时,这是有效的。但是,当我在Weblogic 10中部署我的项目时,它给出了JMSException错误。 IBM MQ是远程部署的,我无法访问它。

错误堆栈跟踪是javax.jms.JMSException:

MQJMS2005: failed to create MQQueueManager for 'hostname:queuemanager'
at com.ibm.mq.jms.services.ConfigEnvironment.newException(ConfigEnvironment.java:644) 
at com.ibm.mq.jms.MQConnection.createQM(MQConnection.java:2567) 
at com.ibm.mq.jms.MQConnection.createQMNonXA(MQConnection.java:1912) 
at com.ibm.mq.jms.MQQueueConnection.<init>(MQQueueConnection.java:161) 
at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:202)
at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:121) 
at com.ibm.mq.jms.MQQueueConnectionFactory.createConnection(MQQueueConnectionFactory.java:1038)

导致此错误的原因是什么?如何解决?为什么只有在我的本地服务器中部署项目时才会出现此错误?

1 个答案:

答案 0 :(得分:8)

使用JMS并且您得到异常但不知道原因时,您可能经常会在一个或多个链接的异常中找到更多信息,您可以通过以下内容查看:

System.out.println(jmsex);
Throwable innerException = jmsex.getLinkedException();
if (innerException != null) {
  System.out.println("Inner exception(s):");
}
while (innerException != null) {
  System.out.println(innerException);
  innerException = innerException.getCause();
}

这些内部/链接异常可能包含MQ原因代码。

在您的情况下,它应该有希望提供连接失败原因的一些线索。例如,队列管理器名称错误,队列管理器未运行,客户端内部存在一些问题......

如果您发现更多信息,但仍在努力解决出现问题的方法,请发布您找到的详细信息,我可以尝试进一步提供建议。