1
votes

Good time!

When application try to start after deploying on WASCE 3.0 it fails with error. In log I got this exception:

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

I checked queue name (it's right) and I can get messages from OZI_INPUT in wasce 3.0 console admin.

With the error code I found this url ibm docs

It says that this error occurs when the application is looking the queue in the other queue manager (not given queue manager). To disable this feature, I should remove the property "Base queue manager name" in the queue. But I can't find something like that property in Websphere MQ Explorer.

So the question is where I can edit this property in Websphere MQ Explorer for Websphere MQ 7.5?


UPDATE

On Websphere MQ I have two queue managers: MQ_ADM and MQ_ADM2 (OZI_INPUT and OZI_OUTPUT are here). On Websphere CA 3.0 I have to JMS resources: For 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

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

Queue   jms/OZI_INPUT
Queue   jms/OZI_OUTPUT

I can see all of this queues when I click "browse" button.

I made a test: add OZI_INPUT and OZI_OUTPUT in MQ_ADM queue manager without any changes on Websphere CA. And my application successfully started.

I can add connectors deployment plan if it will be usefull.


UPDATE2 DISPLAY QUEUE(SYSTEM.*) for MQ_ADM

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)

AND DISPLAY QUEUE(SYSTEM.*) for 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)

For 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)

For 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)
2
The "Unknown Object Name" is probably not the queue you are opening but rather the one it tries to resolve to. We need to see the queue defs. Please display the queues using runmqsc and post the definitions here. Omit all the SYSTEM.* queues and just show the ones you defined.T.Rob
I add results for DISPLAY QUEUE command for MQ_ADM, MQ_ADM2. The results of DISPLAY QUEUE(*) are not complete. I just show that OZI_INPUT and OZI_OUTPUT are existing in both queue managers.egorlitvinenko

2 Answers

1
votes

Is OZI_INPUT a MQ cluster queue? The link you provided is applicable for MQ cluster queues. The Base queue manager in a MQ cluster is the queue manager where the queue/topic is defined. There is nothing like "Base Queue Manager" property that you can set. It is just the queue manager where the queue is defined.

Is your application trying to get messages from a MQ cluster queue (OZI_INPUT in this case) and is NOT defined in the queue manager to which your application is connected to? Remember even if a queue is a cluster queue, application must connect to the queue manager where the queue is defined to get GET messages. However you can PUT messages to a cluster queue even if the queue is defined in some other queue manager in the cluster.

If not using MQ Cluster, then check if your application is connecting to the queue manager where OZI_INPUT queue is defined.

1
votes

I believe that you are having a queue name resolution problem. When MQ_OPEN is called on a queue, the queue manager first tries to decide whether the queue resides on the queue manager that currently has the connection. If it does not, then it tries to resolve a route to the queue manager specified in the MQ_OPEN command. That means it must either know about that QMgr from cluster membership, or else there must be a transmit queue with the name of the remote QMgr, or a QRemote with the name of the remote QMgr and which points to a transmission queue. Any of these will resolve the remote QMgr name.

Since you do not have an MQ cluster set up and there are no queues named MQ_ADM or MQ_ADM2 in your listing then any attempt to open a queue on a non-local QMgr will fail. Now the question is whether it is possible (or likely) that the app is in fact trying to open a non-local queue.

The one configuration item that you have not yet listed is the contents of the JMS Administered objects. You do not see an attribute for Base QMgr Name in Explorer because that is an attribute of the administered [ConnectionFactory][1] object, not any physical object the QMgr knows about. Since your listing of administered objects shows a connectionFactory only for jms/MQRA on MQ_ADM it appears the connection must be to the MQ_ADM queue manager. But the destination that is failing is OZI_INPUT which is a queue that is defined to the MQ_ADM2 QMgr. Any attempt to open that queue from MQ_ADM will trigger QMgr name resolution and since there are no defined routes from that QMgr to MQ_ADM2, the open fails.

The behavior isn't what *you expected but from a WMQ perspective, based on the configurations that have been provided, it is exactly as expected. In other words a slight disconnect between your understanding of WMQ routing vs. how it actually works. To address this issue, I'd recommend reading the following sections of the Infocenter:

Note on that last reference, every object type except for a Topic has Queue Manager as an attribute. That means if you are connected to one QMgr and reference an object that points to another QMgr, regardless of whether that object is one of the connectionFactory types or a queue object, that will trigger resolution to a remote queue manager. Make sure that your application references the right QMgrs and if you need messages to flow from one QMgr to another, make sure that you set up the intercommunication correctly. That means channels, transmission queue(s) and probably QRemote definitions.

Good luck! Once you get past this, remember to post the next thing as a different question rather than an update to this question because StackOverflow operates on discrete questions (not like a forum), and there will be a next thing. :-)