You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by ptie <pe...@nn.nl.INVALID> on 2019/12/16 09:17:13 UTC
Cannot connect MDB to IBM MQ queue via destinationLookup
Hi all,
We 're having trouble with connecting message driven beans to an IBM MQ
queue with TomEE 7.1.0
Annotations on MDB:
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationLookup",
propertyValue = "openejb:Resource/jms/SomeQueueResource"),
@ActivationConfigProperty(propertyName = "destinationType",
propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "connectionFactoryLookup",
propertyValue = "openejb:Resource/jms/SomeConnectionFactory")
})
class SomeMdb implements MessageListener { ... }
openejb-jar.xml:
<openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1">
<ejb-deployment ejb-name="SomeMdb"
deployment-id="SomeMdb" container-id="wmq">
</ejb-deployment>
</openejb-jar>
tomee.xml:
<tomee>
<Deployments dir="apps" />
<Deployments dir="ibm_rar" />
<Container id="wmq" type="MESSAGE">
ResourceAdapter=wmqRA
MessageListenerInterface=javax.jms.MessageListener
ActivationSpecClass=com.ibm.mq.connector.inbound.ActivationSpecImpl
</Container>
<Resource id="wmqRA"
type="com.ibm.mq.connector.ResourceAdapterImpl"
class-name="com.ibm.mq.connector.ResourceAdapterImpl">
connectionConcurrency=5
maxConnections=10
logWriterEnabled=false
reconnectionRetryCount=5
reconnectionRetryInterval=300000
traceEnabled=false
traceLevel=3
</Resource>
<Resource id="jms/SomeConnectionFactory"
type="javax.jms.ConnectionFactory"
class-name="com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl">
TransactionSupport=none
ResourceAdapter=wmqRA
HostName=${MQ_HOST}
Port=${MQ_PORT}
QueueManager=${MQ_MGR}
Channel=${MQ_CHANNEL}
TransportType=Client
UserName=${MQ_USER}
Password=${MQ_PASSWORD}
</Resource>
<Resource id="jms/SomeQueueResource" type="javax.jms.Queue"
class-name="com.ibm.mq.connector.outbound.MQQueueProxy">
arbitraryProperties
baseQueueManagerName=${MQ_MGR}
baseQueueName=MyQueue
CCSID=819
encoding=NATIVE
expiry=APP
failIfQuiesce=true
persistence=APP
priority=APP
readAheadClosePolicy=ALL
targetClient=JMS
</Resource>
</tomee>
Exception:
com.ibm.msg.client.jms.DetailedInvalidDestinationException: JMSWMQ2008:
Failed to open MQ queue 'jms/SomeQueueResource'.
JMS attempted to perform an MQOPEN, but IBM 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:513)
at
com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:215)
at
com.ibm.msg.client.wmq.internal.WMQMessageConsumer.checkJmqiCallSuccess(WMQMessageConsumer.java:222)
at
com.ibm.msg.client.wmq.internal.WMQMessageConsumer.checkJmqiCallSuccess(WMQMessageConsumer.java:156)
at
com.ibm.msg.client.wmq.internal.WMQConsumerShadow.initialize(WMQConsumerShadow.java:1188)
at
com.ibm.msg.client.wmq.internal.WMQAsyncConsumerShadow.initialize(WMQAsyncConsumerShadow.java:974)
at
com.ibm.msg.client.wmq.internal.WMQConnectionBrowser.<init>(WMQConnectionBrowser.java:1463)
at
com.ibm.msg.client.wmq.internal.WMQConnection.createConnectionBrowser(WMQConnection.java:882)
at
com.ibm.msg.client.jms.internal.JmsConnectionImpl.createConnectionBrowser(JmsConnectionImpl.java:1360)
at
com.ibm.msg.client.jms.internal.JmsConnectionConsumerImpl.createConnectionBrowser(JmsConnectionConsumerImpl.java:259)
at
com.ibm.msg.client.jms.internal.JmsConnectionConsumerImpl.<init>(JmsConnectionConsumerImpl.java:180)
at
com.ibm.msg.client.jms.internal.JmsConnectionConsumerImpl.<init>(JmsConnectionConsumerImpl.java:125)
at
com.ibm.msg.client.jms.internal.JmsConnectionImpl.createConnectionConsumer(JmsConnectionImpl.java:658)
at
com.ibm.mq.jms.MQConnection.createConnectionConsumer(MQConnection.java:204)
at
com.ibm.mq.connector.inbound.MessageEndpointDeployment.createConnectionConsumer(MessageEndpointDeployment.java:912)
at
com.ibm.mq.connector.inbound.MessageEndpointDeployment.startDeliveryASF(MessageEndpointDeployment.java:519)
at
com.ibm.mq.connector.inbound.MessageEndpointDeployment.startDelivery(MessageEndpointDeployment.java:437)
... 24 more
Caused by: com.ibm.mq.MQException: JMSCMQ0001: IBM MQ call failed with
compcode '2' ('MQCC_FAILED') reason '2085' ('MQRC_UNKNOWN_OBJECT_NAME').
at
com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:203)
... 39 more
TomEE does pick up the connectionFactoryLookup property, loading the
jms/SomeConnectionFactory resources and making connection to the MQ server
with the connection properties inside the resource. That 's nice.
But for the destinationLookup property, it does not use the baseQueueName
property inside the jms/SomeQueueResource resource, but it seems to use the
resource id itself for the queue name. Which is incorrect, because the queue
name is MyQueue, not jms/SomeQueueResource.
How can we solve this?
Thanks!
Peter
--
Sent from: http://tomee-openejb.979440.n4.nabble.com/TomEE-Users-f979441.html
Re: Cannot connect MDB to IBM MQ queue via destinationLookup
Posted by Jonathan Gallimore <jo...@gmail.com>.
I'll dig out the app I had working with Websphere MQ and get back to you
later today. Apologies for missing the previous message.
Jon
On Fri, Jan 17, 2020 at 4:00 PM ptie <pe...@nn.nl.invalid> wrote:
> Anybody?
>
> Thanks!
> Peter
>
>
>
> --
> Sent from:
> http://tomee-openejb.979440.n4.nabble.com/TomEE-Users-f979441.html
>
Re: Cannot connect MDB to IBM MQ queue via destinationLookup
Posted by ptie <pe...@nn.nl.INVALID>.
Anybody?
Thanks!
Peter
--
Sent from: http://tomee-openejb.979440.n4.nabble.com/TomEE-Users-f979441.html