Apache CXF:JMS连接断开:compcode'2'('MQCC_FAILED')原因'2009'('MQRC_CONNECTION_BROKEN')

时间:2017-06-28 08:37:44

标签: java jms cxf ibm-mq jboss6.x

我们面临的问题类似于CXF-6778中提到的问题。在我们的例子中,我们的应用程序部署在JBOSS EAP 6.4(其中捆绑了CXF 2.7.16)上。我们使用IBM WMQ资源适配器作为消息传递和排队中间件。 JDK版本是1.7。

重新启动MQ服务器后,我们的应用程序将成功重新连接到MQ服务器。但是,如果我们尝试发送任何JMS消息,我们会收到以下异常:

javax.xml.ws.soap.SOAPFaultException: Uncategorized exception occured during JMS processing; nested exception is com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ2008: Failed to open MQ queue 'SYSTEM.DEFAULT.MODEL.QUEUE'.
JMS attempted to perform an MQOPEN, but WebSphere MQ reported an error.
Use the linked exception to determine the cause of this error. Check that the specified queue and queue manager are defined correctly.; nested exception is com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2009' ('MQRC_CONNECTION_BROKEN').

我们认为此问题与CXF-6778中提到的问题非常相似。声称问题CXF-6778在版本3.2.0(尚未发布)中得到解决。由于版本3.2.0尚未发布,我们正试图找出我们拥有的所有选项。

一种选择是升级JBOSS内部捆绑的CXF。但是努力可能很高,所以我们还没打算这样做。

我们可以配置任何选项吗? JMS连接的连接到期超时或我们可以用其他方式删除缓存的断开连接?

请注意,如果我们重新启动JBOSS服务器,则问题不再可以重现。

Stacktrace看起来像:

Runtime exception while getData: javax.xml.ws.soap.SOAPFaultException: Uncategorized exception occured during JMS processing; nested exception is com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ2008: Failed to open MQ queue 'SYSTEM.DEFAULT.MODEL.QUEUE'.
JMS attempted to perform an MQOPEN, but WebSphere MQ reported an error.
Use the linked exception to determine the cause of this error. Check that the specified queue and queue manager are defined correctly.; nested exception is com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2009' ('MQRC_CONNECTION_BROKEN').
        at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:158) [cxf-rt-frontend-jaxws-2.7.17.redhat-1.jar:2.7.17.redhat-1]
        at com.sun.proxy.$Proxy1500.getData(Unknown Source)
        at com.xyz.getData(SomeBean.java:282) [xyz.jar:16.0.1]
        ...
        ...
        at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_80]
        at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Caused by: org.springframework.jms.UncategorizedJmsException: Uncategorized exception occured during JMS processing; nested exception is com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ2008: Failed to open MQ queue 'SYSTEM.DEFAULT.MODEL.QUEUE'.
JMS attempted to perform an MQOPEN, but WebSphere MQ reported an error.
Use the linked exception to determine the cause of this error. Check that the specified queue and queue manager are defined correctly.; nested exception is com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2009' ('MQRC_CONNECTION_BROKEN').
        at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:316)
        at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:168)
        at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:469)
        at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:431)
        at org.apache.cxf.transport.jms.JMSFactory.resolveOrCreateDestination(JMSFactory.java:341) [cxf-rt-transports-jms-2.7.17.redhat-1.jar:2.7.17.redhat-1]
        at org.apache.cxf.transport.jms.JMSConduit.sendExchange(JMSConduit.java:195) [cxf-rt-transports-jms-2.7.17.redhat-1.jar:2.7.17.redhat-1]
        at org.apache.cxf.transport.jms.JMSOutputStream.doClose(JMSOutputStream.java:56) [cxf-rt-transports-jms-2.7.17.redhat-1.jar:2.7.17.redhat-1]
        at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:220) [cxf-api-2.7.17.redhat-1.jar:2.7.17.redhat-1]
        at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:56) [cxf-api-2.7.17.redhat-1.jar:2.7.17.redhat-1]
        at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:223) [cxf-api-2.7.17.redhat-1.jar:2.7.17.redhat-1]
        at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) [cxf-api-2.7.17.redhat-1.jar:2.7.17.redhat-1]
        at org.apache.cxf.transport.jms.JMSConduit.close(JMSConduit.java:128)
        ...
        ...
        [cxf-rt-frontend-jaxws-2.7.17.redhat-1.jar:2.7.17.redhat-1]
        ... 62 more
Caused by: com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ2008: Failed to open MQ queue 'SYSTEM.DEFAULT.MODEL.QUEUE'.
JMS attempted to perform an MQOPEN, but WebSphere MQ reported an error.
Use the linked exception to determine the cause of this error. Check that the specified queue and queue manager are defined correctly.
        at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:585)
        at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:221)
        at com.ibm.msg.client.wmq.internal.WMQConnection.accessTemporaryQueue(WMQConnection.java:644)
        at com.ibm.msg.client.wmq.internal.WMQConnection.createTemporaryDestination(WMQConnection.java:913)
        at com.ibm.msg.client.wmq.internal.WMQSession.createTemporaryDestination(WMQSession.java:911)
        at com.ibm.msg.client.jms.internal.JmsTemporaryQueueImpl.<init>(JmsTemporaryQueueImpl.java:100)
        at com.ibm.msg.client.jms.internal.JmsSessionImpl.createTemporaryQueue(JmsSessionImpl.java:1367)
        at com.ibm.mq.jms.MQSession.createTemporaryQueue(MQSession.java:758)
        at com.ibm.mq.connector.outbound.SessionWrapper.createTemporaryQueue(SessionWrapper.java:554)
        at org.apache.cxf.transport.jms.JMSFactory$1.doInJms(JMSFactory.java:349) [cxf-rt-transports-jms-2.7.17.redhat-1.jar:2.7.17.redhat-1]
        at org.apache.cxf.transport.jms.JMSFactory$1.doInJms(JMSFactory.java:341) [cxf-rt-transports-jms-2.7.17.redhat-1.jar:2.7.17.redhat-1]
        at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:466)
        ... 79 more
Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2009' ('MQRC_CONNECTION_BROKEN').
        at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:209)
        ... 89 more
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2009
        at com.ibm.mq.jmqi.remote.impl.RemoteSession.getConnection(RemoteSession.java:509)
        at com.ibm.mq.jmqi.remote.impl.RemoteSession.isDistListCapable(RemoteSession.java:1826)
        at com.ibm.mq.jmqi.remote.api.RemoteFAP.MQOPEN(RemoteFAP.java:3050)
        at com.ibm.mq.jmqi.remote.api.RemoteFAP.MQOPEN(RemoteFAP.java:2918)
        at com.ibm.msg.client.wmq.internal.WMQConnection.accessTemporaryQueue(WMQConnection.java:619)
        ... 88 more
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2202
        at com.ibm.mq.jmqi.remote.impl.RemoteRcvThread.run(RemoteRcvThread.java:449)
        at com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.runTask(WorkQueueItem.java:214)
        at com.ibm.msg.client.commonservices.workqueue.SimpleWorkQueueItem.runItem(SimpleWorkQueueItem.java:105)
        at com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.run(WorkQueueItem.java:229)
        at com.ibm.msg.client.commonservices.workqueue.WorkQueueManager.runWorkQueueItem(WorkQueueManager.java:303)
        at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManagerImplementation$ThreadPoolWorker.run(WorkQueueManagerImplementation.java:1241)

1 个答案:

答案 0 :(得分:0)

  

JMSWMQ2008:无法打开MQ队列'SYSTEM.DEFAULT.MODEL.QUEUE'。

这是两个问题之一:

  • 运行J2EE容器的UserId没有 在创建时使用'SYSTEM.DEFAULT.MODEL.QUEUE'的权限 临时或永久动态队列。

  • 是否有人将'SYSTEM.DEFAULT.MODEL.QUEUE'作为实际队列 名称? 'SYSTEM.DEFAULT.MODEL.QUEUE'是模型队列,不能 打开。它在创建临时或永久时用作模型 动态队列。