在 jboss 7.1 中配置 MDB 和 MQ 时面临的问题

Posted

技术标签:

【中文标题】在 jboss 7.1 中配置 MDB 和 MQ 时面临的问题【英文标题】:Facing issue while Configuring MDB and MQ in jboss 7.1 【发布时间】:2019-07-05 07:07:41 【问题描述】:

我之前使用的是 jboss 6.4,现在我正在迁移到 jboss 7.1 和 MQ 8,我们已经使用 jboss-ejb3.xml 来配置 MDB 和 MQ,但是在迁移到 jboss 7.1 之后,我收到以下错误,请有人帮忙我来解决这个问题

2019-02-11 12:13:03,739 INFO  [org.apache.activemq.artemis.ra] AMQ151004: Instantiating null "TRANS.CMUPT.REQ.MCOF" directly since UseJNDI=false.
2019-02-11 12:13:05,614 INFO  [org.jboss.as.connector.deployers.RaXmlDeployer] wmq.jmsra.rar: MQJCA4004:Message delivery to an MDB 'null' failed with exception: 'Could not initialize class com.ge.trans.mcs.msgejb.ejb.imr.mdb.InBoundMessageMDB$$$endpoint4'.
2019-02-11 12:13:05,762 INFO  [org.apache.activemq.artemis.ra] AMQ151004: Instantiating null "TRANS.CMUPT.REQ.MCOF" directly since UseJNDI=false.
2019-02-11 12:13:07,785 INFO  [org.apache.activemq.artemis.ra] AMQ151004: Instantiating null "TRANS.CMUPT.REQ.MCOF" directly since UseJNDI=false.
2019-02-11 12:13:09,815 INFO  [org.apache.activemq.artemis.ra] AMQ151004: Instantiating null "TRANS.CMUPT.REQ.MCOF" directly since UseJNDI=false.
2019-02-11 12:13:11,836 INFO  [org.apache.activemq.artemis.ra] AMQ151004: Instantiating null "TRANS.CMUPT.REQ.MCOF" directly since UseJNDI=false.
2019-02-11 12:13:13,854 INFO  [org.apache.activemq.artemis.ra] AMQ151004: Instantiating null "TRANS.CMUPT.REQ.MCOF" directly since UseJNDI=false.
2019-02-11 12:13:15,605 INFO  [org.jboss.as.connector.deployers.RaXmlDeployer] wmq.jmsra.rar: MQJCA4004:Message delivery to an MDB 'null' failed with exception: 'Could n

新日志

看到流动的问题

2019-02-12 12:37:17,736 INFO  [org.jboss.as.connector.deployers.RaXmlDeployer] wmq.jmsra.rar:                                : com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.run(WorkQueueItem.java:338)
2019-02-12 12:37:17,736 INFO  [org.jboss.as.connector.deployers.RaXmlDeployer] wmq.jmsra.rar:                                : com.ibm.msg.client.commonservices.workqueue.WorkQueueManager.runWorkQueueItem(WorkQueueManager.java:312)
2019-02-12 12:37:17,736 INFO  [org.jboss.as.connector.deployers.RaXmlDeployer] wmq.jmsra.rar:                                : com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManagerImplementation$ThreadPoolWorker.run(WorkQueueManagerImplementation.java:1227)
2019-02-12 12:37:17,736 INFO  [org.jboss.as.connector.deployers.RaXmlDeployer] wmq.jmsra.rar:      Caused by [1] --> Message : com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2053' ('MQRC_Q_FULL').
2019-02-12 12:37:17,736 INFO  [org.jboss.as.connector.deployers.RaXmlDeployer] wmq.jmsra.rar:                          Class : class com.ibm.mq.MQException
2019-02-12 12:37:17,736 INFO  [org.jboss.as.connector.deployers.RaXmlDeployer] wmq.jmsra.rar:                          Stack : com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:203)
2019-02-12 12:37:17,736 INFO  [org.jboss.as.connector.deployers.RaXmlDeployer] wmq.jmsra.rar:                                : com.ibm.msg.client.wmq.internal.WMQPoison.checkJmqiCallSuccess(WMQPoison.java:1423)
2019-02-12 12:37:17,736 INFO  [org.jboss.as.connector.deployers.RaXmlDeployer] wmq.jmsra.rar:                                : com.ibm.msg.client.wmq.internal.WMQPoison.put(WMQPoison.java:984)
2019-02-12 12:37:17,736 INFO  [org.jboss.as.connector.deployers.RaXmlDeployer] wmq.jmsra.rar:                                : com.ibm.msg.client.wmq.internal.WMQPoison.deadletter(WMQPoison.java:894)

这是我现在看到的唯一错误,请帮助我解决此问题。

01:25:55,618 INFO [org.jboss.as.connector.deployers.RaXmlDeployer] (default-threads - 2) wmq.jmsra.rar: MQJCA4004:Message delivery to an MDB 'null' failed with exception: 'Could not initialize class com.ge.trans.mcs.msgejb.ejb.alerter.mdb.AlerterMDB$$$endpoint8'.

【问题讨论】:

您能否编辑您的问题并包括最后一个日志条目的其余部分,它似乎在failed with exception: 'Could n 处被切断。不要让我们停留在输出中似乎实际引用 IBM MQ 的唯一一行。 看起来您的 MDB 出现某种类路径错误:com.ge.trans.mcs.msgejb.ejb.imr.mdb.InBoundMessageMDB 该错误表明它无法创建“endpoint4”子类. 当您编辑问题时,请注意我如何格式化您的错误以提高可读性。最简单的方法是将三个反引号 ``` 放在错误上方和下方的一行上,这会将行之间的所有文本格式化为固定字体。 答案是否能帮助您解决问题? 【参考方案1】:

reason '2053' ('MQRC_Q_FULL') 只是听起来的意思,你放入的目标队列已满,这意味着它已达到MAXDEPTH 的消息数。

Could not initialize class com.ge.trans.mcs.msgejb.ejb.alerter.mdb.AlerterMDB$$$endpoint8

在 Tim McCormick 的评论中,他陈述了以下内容:

看起来您的 MDB 存在某种类路径错误:com.ge.trans.mcs.msgejb.ejb.imr.mdb.InBoundMessageMDB 该错误表明它无法创建“endpoint4”子类。

确保 endpoint4 子类在您的类路径中。

【讨论】:

即使在清除 Q 之后我仍然有流动问题```2019-02-12 12:56:45,686 INFO [org.jboss.as.connector.deployers.RaXmlDeployer] wmq.jmsra.rar: MQJCA4004:向 MDB“null”的消息传递失败,出现异常:“无法初始化类 com.ge.trans.mcs.msgejb.ejb.omr.mdb.OutBoundMessageMDB$$$endpoint3”。 2019-02-12 12:56:45,687 INFO [org.jboss.as.connector.deployers.RaXmlDeployer] wmq.jmsra.rar:MQJCA4004:消息传递到 MDB 'null' 失败,异常:'无法初始化类 com .ge.trans.mcs.msgejb.ejb.autoretryer.mdb.AutoRetryerMDB$$$endpoint12'。 这是一个不同的错误,看起来像你第一次发布的错误。我的回答与 2053 年特别相关。 您应该始终编辑您的问题以发布错误日志,cmets 不会格式化内容并使其难以阅读。较早的错误看起来像 Tim 对类路径错误的评论。 ``` 01:25:55,618 INFO [org.jboss.as.connector.deployers.RaXmlDeployer] (default-threads - 2) wmq.jmsra.rar: MQJCA4004: 消息传递到 MDB 'null' 失败并出现异常:'Could not initialize class com.ge.trans.mcs.msgejb.ejb.alerter.mdb.AlerterMDB$$$endpoint8'.``` 抱歉没有编辑我现在得到的唯一错误.

以上是关于在 jboss 7.1 中配置 MDB 和 MQ 时面临的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JBoss 7.1 中配置外部供应商 SSL 证书

如何在 JBoss 5 中订购 EJB 和 JMS 队列配置的部署?

如何在 JBOSS MDB 中禁用 XA 连接

windows下JBOSS 7.1 安装部署

如何修改 JBoss AS 7.1 上内置的 h2 数据库?

jboss.jms 和 jboss.mq 有啥区别?