繁体   English   中英

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

[英]Apache CXF: JMS connection broken: compcode '2' ('MQCC_FAILED') reason '2009' ('MQRC_CONNECTION_BROKEN')

我们面临类似于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 服务器,问题将无法重现。

堆栈跟踪看起来像:

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)

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

这是两个问题之一:

  • 创建临时或永久动态队列时,运行 J2EE 容器的 UserId 无权使用“SYSTEM.DEFAULT.MODEL.QUEUE”。

  • 有人将“SYSTEM.DEFAULT.MODEL.QUEUE”作为实际队列名称吗? 'SYSTEM.DEFAULT.MODEL.QUEUE' 是模型队列,无法打开。 在创建临时或永久动态队列时将其用作模型。

在我的情况下,我不得不关闭mqcsp -Authentication。 这可以通过ibm.mq.use-authentication-mqcsp=false来完成,如果您遵循 IBM 的Spring Boot 示例但在您的配置中没有密码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM