1

美好时光!

当应用程序在 WASCE 3.0 上部署后尝试启动时,它会失败并出现错误。在日志中我得到了这个异常:

Caused by: com.ibm.msg.client.jms.DetailedInvalidDestinationException: JMSWMQ2008: Не удалось открыть очередь MQ 'OZI_INPUT'.
При попытке JMS выполнить MQOPEN WebSphere MQ сообщил об ошибке.
Для определения причины ошибки обратитесь к связанной исключительной ситуации. Проверьте правильность определения указанной очереди или администратора очередей.
    at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:503)
    at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:221)
...
Caused by: com.ibm.mq.MQException: JMSCMQ0001: Не удалось выполнить вызов WebSphere MQ с кодом '2' ('MQCC_FAILED') причина '2085' ('MQRC_UNKNOWN_OBJECT_NAME').
    at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:209)
    ... 98 more

我检查了队列名称(它是正确的),我可以在 wasce 3.0 控制台管理员中从 OZI_INPUT 获取消息。

使用错误代码,我找到了这个 url ibm docs

它表示当应用程序在另一个队列管理器(未给定队列管理器)中查找队列时会发生此错误。要禁用此功能,我应该删除队列中的属性“基本队列管理器名称”。但我在 Websphere MQ Explorer 中找不到类似的属性。

所以问题是我可以在 Websphere MQ Explorer for Websphere MQ 7.5 的哪里编辑这个属性?


更新

在 Websphere MQ 上,我有两个队列管理器:MQ_ADM 和 MQ_ADM2(OZI_INPUT 和 OZI_OUTPUT 在这里)。在 Websphere CA 3.0 上,我必须使用 JMS 资源: 对于 MQ_ADM - MQRA (com.ibm.mq/WMQRA/7.1.0.1/rar):

Connection Factory  jms/MQRA
Queue   jms/EHD_CE_OUTPUT
Queue   jms/EHD_INPUT
Queue   jms/EHD_LK_NPF_OUTPUT   
Queue   jms/EHD_OUTPUT
Queue   jms/EHD_OZI_OUTPUT

对于 MQ_ADM2 - OziRA (ozi.jms/OziCommands/1.0/rar):

Queue   jms/OZI_INPUT
Queue   jms/OZI_OUTPUT

当我单击“浏览”按钮时,我可以看到所有这些队列。

我做了一个测试:在 MQ_ADM 队列管理器中添加 OZI_INPUT 和 OZI_OUTPUT,而不对 Websphere CA 进行任何更改。我的应用程序成功启动。

如果有用,我可以添加连接器部署计划。


MQ_ADM 的 UPDATE2 显示队列(系统。*)

DISPLAY QUEUE(SYSTEM.*)
     4 : DISPLAY QUEUE(SYSTEM.*)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.ACCOUNTING.QUEUE)    TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.ACTIVITY.QUEUE)      TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.CHANNEL.EVENT)       TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.COMMAND.EVENT)       TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.COMMAND.QUEUE)       TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.CONFIG.EVENT)        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.LOGGER.EVENT)        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.PERFM.EVENT)         TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.PUBSUB.EVENT)        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.QMGR.EVENT)          TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.STATISTICS.QUEUE)    TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.TRACE.ACTIVITY.QUEUE)
   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.TRACE.ROUTE.QUEUE)   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.AUTH.DATA.QUEUE)           TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.BROKER.ADMIN.STREAM)       TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.BROKER.CONTROL.QUEUE)      TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.BROKER.DEFAULT.STREAM)     TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.BROKER.INTER.BROKER.COMMUNICATIONS)
   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.CHANNEL.INITQ)             TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.CHANNEL.SYNCQ)             TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.CHLAUTH.DATA.QUEUE)        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.CICS.INITIATION.QUEUE)     TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.CLUSTER.COMMAND.QUEUE)     TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.CLUSTER.HISTORY.QUEUE)     TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.CLUSTER.REPOSITORY.QUEUE)
   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.CLUSTER.TRANSMIT.MODEL.QUEUE)
   TYPE(QMODEL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.CLUSTER.TRANSMIT.QUEUE)    TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.DEAD.LETTER.QUEUE)         TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.DEFAULT.ALIAS.QUEUE)       TYPE(QALIAS)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.DEFAULT.INITIATION.QUEUE)
   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.DEFAULT.LOCAL.QUEUE)       TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.DEFAULT.MODEL.QUEUE)       TYPE(QMODEL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.DEFAULT.REMOTE.QUEUE)      TYPE(QREMOTE
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.DOTNET.XARECOVERY.QUEUE)   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.DURABLE.MODEL.QUEUE)       TYPE(QMODEL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.DURABLE.SUBSCRIBER.QUEUE)
   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.HIERARCHY.STATE)           TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.INTER.QMGR.CONTROL)        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.INTER.QMGR.FANREQ)         TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.INTER.QMGR.PUBS)           TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.INTERNAL.REPLY.QUEUE)      TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.JMS.TEMPQ.MODEL)           TYPE(QMODEL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.MQEXPLORER.REPLY.MODEL)    TYPE(QMODEL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.MQSC.REPLY.QUEUE)          TYPE(QMODEL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.NDURABLE.MODEL.QUEUE)      TYPE(QMODEL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.PENDING.DATA.QUEUE)        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.PROTECTION.ERROR.QUEUE)    TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.PROTECTION.POLICY.QUEUE)   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.RETAINED.PUB.QUEUE)        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.SELECTION.EVALUATION.QUEUE)
   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.SELECTION.VALIDATION.QUEUE)
   TYPE(QLOCAL)

并显示 MQ_ADM2 的队列(系统。*)

DISPLAY QUEUE(SYSTEM.*)
     1 : DISPLAY QUEUE(SYSTEM.*)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.ACCOUNTING.QUEUE)    TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.ACTIVITY.QUEUE)      TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.CHANNEL.EVENT)       TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.COMMAND.EVENT)       TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.COMMAND.QUEUE)       TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.CONFIG.EVENT)        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.LOGGER.EVENT)        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.PERFM.EVENT)         TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.PUBSUB.EVENT)        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.QMGR.EVENT)          TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.STATISTICS.QUEUE)    TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.TRACE.ACTIVITY.QUEUE)
   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.TRACE.ROUTE.QUEUE)   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.AUTH.DATA.QUEUE)           TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.BROKER.ADMIN.STREAM)       TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.BROKER.CONTROL.QUEUE)      TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.BROKER.DEFAULT.STREAM)     TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.BROKER.INTER.BROKER.COMMUNICATIONS)
   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.CHANNEL.INITQ)             TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.CHANNEL.SYNCQ)             TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.CHLAUTH.DATA.QUEUE)        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.CICS.INITIATION.QUEUE)     TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.CLUSTER.COMMAND.QUEUE)     TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.CLUSTER.HISTORY.QUEUE)     TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.CLUSTER.REPOSITORY.QUEUE)
   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.CLUSTER.TRANSMIT.MODEL.QUEUE)
   TYPE(QMODEL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.CLUSTER.TRANSMIT.QUEUE)    TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.DEAD.LETTER.QUEUE)         TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.DEFAULT.ALIAS.QUEUE)       TYPE(QALIAS)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.DEFAULT.INITIATION.QUEUE)
   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.DEFAULT.LOCAL.QUEUE)       TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.DEFAULT.MODEL.QUEUE)       TYPE(QMODEL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.DEFAULT.REMOTE.QUEUE)      TYPE(QREMOTE
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.DOTNET.XARECOVERY.QUEUE)   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.DURABLE.MODEL.QUEUE)       TYPE(QMODEL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.DURABLE.SUBSCRIBER.QUEUE)
   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.HIERARCHY.STATE)           TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.INTER.QMGR.CONTROL)        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.INTER.QMGR.FANREQ)         TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.INTER.QMGR.PUBS)           TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.INTERNAL.REPLY.QUEUE)      TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.JMS.TEMPQ.MODEL)           TYPE(QMODEL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.MQEXPLORER.REPLY.MODEL)    TYPE(QMODEL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.MQSC.REPLY.QUEUE)          TYPE(QMODEL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.NDURABLE.MODEL.QUEUE)      TYPE(QMODEL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.PENDING.DATA.QUEUE)        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.PROTECTION.ERROR.QUEUE)    TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.PROTECTION.POLICY.QUEUE)   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.RETAINED.PUB.QUEUE)        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.SELECTION.EVALUATION.QUEUE)
   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.SELECTION.VALIDATION.QUEUE)
   TYPE(QLOCAL)

对于 MQ_ADM:

DISPLAY QUEUE(*)
     1 : DISPLAY QUEUE(*)
AMQ8409: Сведения об очереди.
   QUEUE(AMQ.MQEXPLORER.1380471368)        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(COMMAND_INPUT)                    TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(EHD_CE_OUTPUT)                    TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(EHD_INPUT)                        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(EHD_LK_NPF_OUTPUT)                TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(EHD_OUTPUT)                       TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(EHD_OZI_OUTPUT)                   TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(OZI_INPUT)                        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(OZI_OUTPUT)                       TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.ACCOUNTING.QUEUE)    TYPE(QLOCAL)

对于 MQ_ADM2:

DISPLAY QUEUE(*)
     1 : DISPLAY QUEUE(*)
AMQ8409: Сведения об очереди.
   QUEUE(AMQ.MQEXPLORER.1293962528)        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(OZI_INPUT)                        TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(OZI_OUTPUT)                       TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.ACCOUNTING.QUEUE)    TYPE(QLOCAL)
AMQ8409: Сведения об очереди.
   QUEUE(SYSTEM.ADMIN.ACTIVITY.QUEUE)      TYPE(QLOCAL)
4

2 回答 2

1

OZI_INPUT 是 MQ 集群队列吗?您提供的链接适用于 MQ 集群队列。MQ 集群中的基本队列管理器是定义队列/主题的队列管理器。没有什么比“基本队列管理器”属性可以设置的了。它只是定义队列的队列管理器。

您的应用程序是否试图从 MQ 集群队列(在本例中为 OZI_INPUT)获取消息,并且未您的应用程序连接到的队列管理器中定义?请记住,即使队列是集群队列,应用程序也必须连接到定义队列的队列管理器以获取 GET 消息。但是,即使队列是在集群中的某个其他队列管理器中定义的,您也可以将消息放入集群队列。

如果不使用 MQ 集群,请检查您的应用程序是否连接到定义 OZI_INPUT 队列的队列管理器。

于 2014-04-20T13:32:49.253 回答
1

我相信您遇到了队列名称解析问题。在MQ_OPEN队列上调用时,队列管理器首先尝试确定队列是否驻留在当前具有连接的队列管理器上。如果没有,则尝试解析到MQ_OPEN命令中指定的队列管理器的路由。这意味着它必须要么从集群成员中知道该 QMgr,否则必须有一个带有远程 QMgr 名称的传输队列,或者一个带有远程 QMgr 名称并指向传输队列的 QRemote。其中任何一个都将解析远程 QMgr 名称。

由于您没有设置 MQ 集群,并且在您的列表中没有命名MQ_ADM或队列MQ_ADM2,因此任何在非本地 QMgr 上打开队列的尝试都将失败。现在的问题是应用程序是否有可能(或可能)实际上正在尝试打开非本地队列。

您尚未列出的一个配置项是 JMS 管理对象的内容。您在 Explorer 中看不到 Base QMgr Name 的属性,因为这是管理[ConnectionFactory][1]对象的属性,而不是 QMgr 知道的任何物理对象。由于您的管理对象列表显示了一个connectionFactoryonly for jms/MQRAMQ_ADM因此似乎连接必须是到MQ_ADM队列管理器。但是失败的目的地OZI_INPUT是定义给MQ_ADM2QMgr 的队列。任何打开该队列的尝试MQ_ADM都将触发 QMgr 名称解析,并且由于没有从该 QMgr 到MQ_ADM2的定义路由,因此打开失败。

该行为不是*您所期望的,但从WMQ 的角度来看,基于已提供的配置,它完全符合预期。换句话说,您对 WMQ 路由的理解与它的实际工作方式之间存在轻微的脱节。为了解决这个问题,我建议阅读信息中心的以下部分:

请注意最后一个引用,除了主题之外的每个对象类型都具有队列管理器作为属性。这意味着如果您连接到一个 QMgr 并引用指向另一个 QMgr 的对象,无论该对象是其中一种connectionFactory类型还是queue对象,都会触发对远程队列管理器的解析。确保您的应用程序引用了正确的 QMgr,并且如果您需要消息从一个 QMgr 流向另一个 QMgr,请确保您正确设置了相互通信。这意味着通道、传输队列和可能的 QRemote 定义。

祝你好运!一旦你解决了这个问题,请记住将下一个问题作为不同的问题发布,而不是对该问题的更新,因为 StackOverflow 对离散问题(不像论坛)进行操作,并且会有一个问题。:-)

于 2014-04-23T01:08:58.723 回答