Author |
Message
|
psujeethkumar |
Posted: Tue Sep 08, 2015 7:36 am Post subject: SOAP / JMS with Temporary Queues |
|
|
Novice
Joined: 08 Sep 2015 Posts: 13
|
Hello,
I am new and glad to be here in this forum. I am intermediate level in IBM Integration Bus / Websphere MQ.
We have a SOAP based web service developed in IIB with JMS as transport. We did following steps/actions to configure queues/flows ...
1. Created SYSTEM.JMS.MODEL.QUEUE as described here
2. Created MQ Local queue
3. Using file system to store JNDI bindings
4. Created JMS connection factory with temporary queue refering to SYSTEM.JMS.MODEL.QUEUE.
5. Created JMS queue refering to local queue.
Main Message flow :
SOAP Input Node (JMS transport) -> SOAP Extract (With routing to operation label)
Label Node -> Subflow (With some processing)
Sub flow:
Input Node -> [Some business logic] -> SOAP Reply Node.
The web service works well BUT when large number of SOAP request messages (say 150) are posted on to queue it fails processing feew messages.
Observations :
1. The following exception trace is printed in log file of execution group irrespective of successful processing of SOAP request or not :
Code: |
2015-09-08 13:33:49.323 46 com.ibm.msg.client.jms.DetailedIllegalStateException: JMSWMQ2008: Failed to open MQ queue 'Contract.QueryCommercialContract.1.0'.
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.
2015-09-08 13:33:49.326 46 at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:479)
2015-09-08 13:33:49.327 46 at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:221)
2015-09-08 13:33:49.327 46 at com.ibm.msg.client.wmq.internal.WMQMessageConsumer.checkJmqiCallSuccess(WMQMessageConsumer.java:129)
2015-09-08 13:33:49.328 46 at com.ibm.msg.client.wmq.internal.WMQConsumerShadow.initialize(WMQConsumerShadow.java:962)
2015-09-08 13:33:49.329 46 at com.ibm.msg.client.wmq.internal.WMQSyncConsumerShadow.initialize(WMQSyncConsumerShadow.java:132)
2015-09-08 13:33:49.329 46 at com.ibm.msg.client.wmq.internal.WMQMessageConsumer.<init>(WMQMessageConsumer.java:257)
2015-09-08 13:33:49.330 46 at com.ibm.msg.client.wmq.internal.WMQSession.createConsumer(WMQSession.java:788)
2015-09-08 13:33:49.331 46 at com.ibm.msg.client.jms.internal.JmsSessionImpl.createConsumer(JmsSessionImpl.java:818)
2015-09-08 13:33:49.331 46 at com.ibm.msg.client.jms.internal.JmsSessionImpl.createConsumer(JmsSessionImpl.java:890)
2015-09-08 13:33:49.332 46 at com.ibm.msg.client.jms.internal.JmsQueueSessionImpl.createReceiver(JmsQueueSessionImpl.java:116)
2015-09-08 13:33:49.332 46 at com.ibm.mq.jms.MQQueueSession.createReceiver(MQQueueSession.java:97)
2015-09-08 13:33:49.333 46 at com.ibm.broker.jmsconnmgr.JMSConnectionManager.createMsgConsumer(JMSConnectionManager.java:3340)
2015-09-08 13:33:49.333 46 at com.ibm.broker.jmsconnmgr.JMSConnectionManager.accessConsumerMap(JMSConnectionManager.java:2867)
2015-09-08 13:33:49.333 46 at com.ibm.broker.jmsconnmgr.JMSConnectionManager.getConsumer(JMSConnectionManager.java:2644)
2015-09-08 13:33:49.334 46 at com.ibm.broker.jmsclienthelper.JMSClientHelper.createMsgConsumer(JMSClientHelper.java:1715)
2015-09-08 13:33:49.334 46 at com.ibm.broker.jmsclienthelper.JMSClientInputReplyHelper.getJMSInput(JMSClientInputReplyHelper.java:473)
2015-09-08 13:33:49.335 46 at com.ibm.broker.axis2.JMSNodeRegistrationUtil.getDataFromJMS(JMSNodeRegistrationUtil.java:537)
2015-09-08 13:33:49.336 46 Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2042' ('MQRC_OBJECT_IN_USE').
2015-09-08 13:33:49.336 46 at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:209)
2015-09-08 13:33:49.337 46 ... 15 more
Exception in thread "Thread-31" 2015-09-08 13:33:51.840 46 BIP3619E: com.ibm.broker.axis2.MbSoapException: Exception getting SOAP JMS message.
2015-09-08 13:33:51.841 46 at com.ibm.broker.axis2.JMSNodeRegistrationUtil.getDataFromJMS(JMSNodeRegistrationUtil.java:599)
2015-09-08 13:33:51.841 46 Caused by: <com.ibm.broker.plugin.MbRecoverableException class:com.ibm.broker.jmsclientnodes.JMSClientErrors@bb6ef203 method:JMSClientHelper::createMsgConsumer() source:BIPmsgs key:4647 >
2015-09-08 13:33:51.842 46 at com.ibm.broker.jmsclientnodes.JMSClientErrors.throwException(JMSClientErrors.java:754)
2015-09-08 13:33:51.842 46 at com.ibm.broker.jmsclienthelper.JMSClientHelper.createMsgConsumer(JMSClientHelper.java:1749)
2015-09-08 13:33:51.843 46 at com.ibm.broker.jmsclienthelper.JMSClientInputReplyHelper.getJMSInput(JMSClientInputReplyHelper.java:473)
2015-09-08 13:33:51.843 46 at com.ibm.broker.axis2.JMSNodeRegistrationUtil.getDataFromJMS(JMSNodeRegistrationUtil.java:537)
2015-09-08 13:33:53.011 47 com.ibm.msg.client.jms.DetailedIllegalStateException: JMSWMQ2008: Failed to open MQ queue 'Contract.QueryCommercialContract.1.0'.
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.
2015-09-08 13:33:53.012 47 at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:479)
2015-09-08 13:33:53.013 47 at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:221)
2015-09-08 13:33:53.014 47 at com.ibm.msg.client.wmq.internal.WMQMessageConsumer.checkJmqiCallSuccess(WMQMessageConsumer.java:129)
2015-09-08 13:33:53.015 47 at com.ibm.msg.client.wmq.internal.WMQConsumerShadow.initialize(WMQConsumerShadow.java:962)
2015-09-08 13:33:53.015 47 at com.ibm.msg.client.wmq.internal.WMQSyncConsumerShadow.initialize(WMQSyncConsumerShadow.java:132)
2015-09-08 13:33:53.016 47 at com.ibm.msg.client.wmq.internal.WMQMessageConsumer.<init>(WMQMessageConsumer.java:257)
2015-09-08 13:33:53.017 47 at com.ibm.msg.client.wmq.internal.WMQSession.createConsumer(WMQSession.java:788)
2015-09-08 13:33:53.018 47 at com.ibm.msg.client.jms.internal.JmsSessionImpl.createConsumer(JmsSessionImpl.java:818)
2015-09-08 13:33:53.019 47 at com.ibm.msg.client.jms.internal.JmsSessionImpl.createConsumer(JmsSessionImpl.java:890)
2015-09-08 13:33:53.020 47 at com.ibm.msg.client.jms.internal.JmsQueueSessionImpl.createReceiver(JmsQueueSessionImpl.java:116)
2015-09-08 13:33:53.021 47 at com.ibm.mq.jms.MQQueueSession.createReceiver(MQQueueSession.java:97)
2015-09-08 13:33:53.022 47 at com.ibm.broker.jmsconnmgr.JMSConnectionManager.createMsgConsumer(JMSConnectionManager.java:3340)
2015-09-08 13:33:53.023 47 at com.ibm.broker.jmsconnmgr.JMSConnectionManager.accessConsumerMap(JMSConnectionManager.java:2867)
2015-09-08 13:33:53.023 47 at com.ibm.broker.jmsconnmgr.JMSConnectionManager.getConsumer(JMSConnectionManager.java:2644)
2015-09-08 13:33:53.024 47 at com.ibm.broker.jmsclienthelper.JMSClientHelper.createMsgConsumer(JMSClientHelper.java:1715)
2015-09-08 13:33:53.025 47 at com.ibm.broker.jmsclienthelper.JMSClientInputReplyHelper.getJMSInput(JMSClientInputReplyHelper.java:473)
2015-09-08 13:33:53.025 47 at com.ibm.broker.axis2.JMSNodeRegistrationUtil.getDataFromJMS(JMSNodeRegistrationUtil.java:537)
2015-09-08 13:33:53.026 47 Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2042' ('MQRC_OBJECT_IN_USE').
2015-09-08 13:33:53.027 47 at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:209)
2015-09-08 13:33:53.028 47 ... 15 more
|
2. In case of error following exception message is printed in the error log from the message flow:
Code: |
<File>F:\build\slot1\S900_P\src\WebServices\WSLibrary\ImbSOAPReplyNode.cpp</File>
<Line>397</Line>
<Function>ImbSOAPReplyNode::evaluate</Function>
<Type>ComIbmSOAPReplyNode</Type>
<Name>be/edfluminus/contract/querycommercialcontract/QueryCommercialContract#FCMComposite_1_8.be/
edfluminus/contract/querycommercialcontract/findcommercialcontractsbycustomer/
FindCommercialContractsByCustomer#FCMComposite_1_8</Name>
<Label>be.edfluminus.contract.querycommercialcontract.QueryCommercialContract.be/
edfluminus/contract/querycommercialcontract/findcommercial
contractsbycustomer/FindCommercialContractsByCustomer.SOAP Reply</Label>
<Catalog>BIPmsgs</Catalog>
<Severity>3</Severity>
<Number>3752</Number>
<Text>Error occurred in ImbSOAPReplyHelper::makeSOAPReply()</Text>
<RecoverableException>
<File>F:\build\slot1\S900_P\src\WebServices\WSLibrary\ImbSOAPReplyHelper.cpp</File>
<Line>781</Line>
<Function>ImbSOAPReplyHelper::makeSOAPReply</Function>
<Type/>
<Name/>
<Label/>
<Catalog>BIPmsgs</Catalog>
<Severity>3</Severity>
<Number>3184</Number>
<Text>Warning: unable to send reply.</Text>
<Insert>
<Type>5</Type>
<Text>jms:jndi:Contract.QueryCommercialContract.1.0</Text>
</Insert>
</RecoverableException>
|
3. When above exception occurs, following is printed in the execution group console.log file :
Code: |
Exception in thread "Thread-27" 2015-09-08 13:34:03.378 42 org.apache.axis2.AxisFault: Error: Trying to send a message when an attempt to send a reply has already been made. A previous attempt to send a reply may have been made, but the client connection canot be reused.
2015-09-08 13:34:03.378 42 at com.ibm.broker.axis2.Axis2Invoker.sendReplyInternalNotThroughPipeline(Axis2Invoker.java:1470)
2015-09-08 13:34:03.378 42 at com.ibm.broker.axis2.Axis2Invoker.sendReplyDataSoap(Axis2Invoker.java:1127)
2015-09-08 13:34:03.379 42 at com.ibm.broker.plugin.MbOutputTerminal._propagate(Native Method)
2015-09-08 13:34:03.379 42 at com.ibm.broker.plugin.MbOutputTerminal.propagate(MbOutputTerminal.java:133)
2015-09-08 13:34:03.379 42 at com.ibm.broker.plugin.MbOutputTerminal.propagate(MbOutputTerminal.java:88)
2015-09-08 13:34:03.379 42 at com.ibm.broker.ct.mapping.MappingNode.buildAndPropagate(MappingNode.java:523)
2015-09-08 13:34:03.379 42 at com.ibm.broker.ct.mapping.MappingNode.evaluate(MappingNode.java:336)
2015-09-08 13:34:03.379 42 at com.ibm.broker.plugin.MbNode.evaluate(MbNode.java:1480)
2015-09-08 13:34:03.380 42 at com.ibm.broker.plugin.MbOutputTerminal._propagate(Native Method)
2015-09-08 13:34:03.380 42 at com.ibm.broker.plugin.MbOutputTerminal.propagate(MbOutputTerminal.java:133)
2015-09-08 13:34:03.380 42 at com.ibm.broker.plugin.MbOutputTerminal.propagate(MbOutputTerminal.java:88)
2015-09-08 13:34:03.380 42 at be.edfluminus.global.logging.CleanLog.evaluate(CleanLog.java:60)
2015-09-08 13:34:03.380 42 at com.ibm.broker.javacompute.MbRuntimeJavaComputeNode.evaluate(MbRuntimeJavaComputeNode.java:281)
2015-09-08 13:34:03.380 42 at com.ibm.broker.plugin.MbNode.evaluate(MbNode.java:1480)
2015-09-08 13:34:03.381 42 at com.ibm.broker.plugin.MbOutputTerminal._propagate(Native Method)
2015-09-08 13:34:03.381 42 at com.ibm.broker.plugin.MbOutputTerminal.propagate(MbOutputTerminal.java:133)
2015-09-08 13:34:03.381 42 at com.ibm.broker.plugin.MbOutputTerminal.propagate(MbOutputTerminal.java:88)
2015-09-08 13:34:03.381 42 at com.ibm.broker.soap.SoapWrapperNode.evaluate(SoapWrapperNode.java:132)
2015-09-08 13:34:03.381 42 at com.ibm.broker.plugin.MbNode.evaluate(MbNode.java:1480)
2015-09-08 13:34:03.381 42 at com.ibm.broker.plugin.MbOutputTerminal._propagate(Native Method)
2015-09-08 13:34:03.382 42 at com.ibm.broker.plugin.MbOutputTerminal.propagate(MbOutputTerminal.java:133)
2015-09-08 13:34:03.382 42 at com.ibm.broker.plugin.MbOutputTerminal.propagate(MbOutputTerminal.java:88)
2015-09-08 13:34:03.382 42 at be.edfluminus.global.logging.LoggerCompute.evaluate(LoggerCompute.java:194)
2015-09-08 13:34:03.382 42 at com.ibm.broker.javacompute.MbRuntimeJavaComputeNode.evaluate(MbRuntimeJavaComputeNode.java:281)
2015-09-08 13:34:03.382 42 at com.ibm.broker.plugin.MbNode.evaluate(MbNode.java:1480)
2015-09-08 13:34:03.383 42 at com.ibm.broker.plugin.MbOutputTerminal._propagate(Native Method)
2015-09-08 13:34:03.383 42 at com.ibm.broker.plugin.MbOutputTerminal.propagate(MbOutputTerminal.java:133)
2015-09-08 13:34:03.383 42 at com.ibm.broker.plugin.MbOutputTerminal.propagate(MbOutputTerminal.java:88)
2015-09-08 13:34:03.383 42 at be.edfluminus.global.AbstractCustomJaxbNode.evaluate(AbstractCustomJaxbNode.java:69)
2015-09-08 13:34:03.383 42 at com.ibm.broker.plugin.MbNode.evaluate(MbNode.java:1480)
2015-09-08 13:34:03.383 42 at com.ibm.broker.plugin.MbOutputTerminal._propagate(Native Method)
2015-09-08 13:34:03.385 42 at com.ibm.broker.plugin.MbOutputTerminal.propagate(MbOutputTerminal.java:133)
2015-09-08 13:34:03.385 42 at com.ibm.broker.plugin.MbOutputTerminal.propagate(MbOutputTerminal.java:88)
2015-09-08 13:34:03.386 42 at be.edfluminus.global.AbstractCustomJaxbNode.evaluate(AbstractCustomJaxbNode.java:69)
2015-09-08 13:34:03.386 42 at com.ibm.broker.plugin.MbNode.evaluate(MbNode.java:1480)
2015-09-08 13:34:03.386 42 at com.ibm.broker.plugin.MbRoute._propagate(Native Method)
2015-09-08 13:34:03.387 42 at com.ibm.broker.plugin.MbRoute.propagate(MbRoute.java:95)
2015-09-08 13:34:03.387 42 at com.ibm.broker.soap.SoapExtractNode.routeToOperationLabelNode(SoapExtractNode.java:532)
2015-09-08 13:34:03.387 42 at com.ibm.broker.soap.SoapExtractNode.evaluate(SoapExtractNode.java:275)
2015-09-08 13:34:03.387 42 at com.ibm.broker.plugin.MbNode.evaluate(MbNode.java:1480)
2015-09-08 13:34:03.401 42 com.ibm.msg.client.jms.DetailedInvalidDestinationException: JMSWMQ2008: Failed to open MQ queue 'AMQ.55ED865B02BF1620'.
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.
2015-09-08 13:34:03.402 42 at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:503)
2015-09-08 13:34:03.402 42 at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:221)
2015-09-08 13:34:03.402 42 at com.ibm.msg.client.wmq.internal.WMQMessageProducer.checkJmqiCallSuccess(WMQMessageProducer.java:1061)
2015-09-08 13:34:03.402 42 at com.ibm.msg.client.wmq.internal.WMQMessageProducer.checkJmqiCallSuccess(WMQMessageProducer.java:1019)
2015-09-08 13:34:03.403 42 at com.ibm.msg.client.wmq.internal.WMQMessageProducer.access$800(WMQMessageProducer.java:68)
2015-09-08 13:34:03.403 42 at com.ibm.msg.client.wmq.internal.WMQMessageProducer$SpiIdentifiedProducerShadow.initialise(WMQMessageProducer.java:765)
2015-09-08 13:34:03.403 42 at com.ibm.msg.client.wmq.internal.WMQMessageProducer.<init>(WMQMessageProducer.java:995)
2015-09-08 13:34:03.403 42 at com.ibm.msg.client.wmq.internal.WMQSession.createProducer(WMQSession.java:886)
2015-09-08 13:34:03.403 42 at com.ibm.msg.client.jms.internal.JmsSessionImpl.createProducer(JmsSessionImpl.java:1232)
2015-09-08 13:34:03.404 42 at com.ibm.msg.client.jms.internal.JmsQueueSessionImpl.createSender(JmsQueueSessionImpl.java:136)
2015-09-08 13:34:03.404 42 at com.ibm.mq.jms.MQQueueSession.createSender(MQQueueSession.java:153)
2015-09-08 13:34:03.404 42 at com.ibm.broker.jmsconnmgr.JMSConnectionManager.createMsgProducer(JMSConnectionManager.java:3686)
2015-09-08 13:34:03.404 42 at com.ibm.broker.jmsconnmgr.JMSConnectionManager.accessProducerMap(JMSConnectionManager.java:3518)
2015-09-08 13:34:03.404 42 at com.ibm.broker.jmsconnmgr.JMSConnectionManager.getProducer(JMSConnectionManager.java:3402)
2015-09-08 13:34:03.404 42 at com.ibm.broker.jmsclienthelper.JMSClientHelper.createMsgProducer(JMSClientHelper.java:1962)
2015-09-08 13:34:03.405 42 at com.ibm.broker.jmsclienthelper.JMSClientInputReplyHelper.makeJMSReply(JMSClientInputReplyHelper.java:1421)
2015-09-08 13:34:03.405 42 at com.ibm.broker.axis2.WMBOutboundJMSTransport.finish(WMBOutboundJMSTransport.java:570)
2015-09-08 13:34:03.405 42 at com.ibm.broker.axis2.Axis2Invoker.sendAxis2FaultReply(Axis2Invoker.java:2375)
2015-09-08 13:34:03.405 42 Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2085' ('MQRC_UNKNOWN_OBJECT_NAME').
2015-09-08 13:34:03.406 42 at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:209)
2015-09-08 13:34:03.406 42 ... 16 more
|
Based on my analysis, I suspect somehow the termporary queues are closed before the response is being sent.
Any one faced this issue ?
I am not expert in WebsphereMQ, but based on my design experience I decided to use temporary dynamic queues for scalability and performance reasons. Should this be reviewed and use static queues for response ?
Thanks in advance for help. |
|
Back to top |
|
 |
Vitor |
Posted: Tue Sep 08, 2015 7:53 am Post subject: Re: SOAP / JMS with Temporary Queues |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
psujeethkumar wrote: |
Based on my analysis, I suspect somehow the termporary queues are closed before the response is being sent. |
Why do you not suspect that when the MQOPEN fails with the 2042 error, the queue is not created and the reply then fails with a 2085 trying to use the non-existent queue.
psujeethkumar wrote: |
Any one faced this issue ? |
Can't say I have. But if it was me, I'd start with determining why the open fails with a 2042 before wondering why the reply fails with a 2085. Questions like "what's in use by what?" would be probative I think.
psujeethkumar wrote: |
I am not expert in WebsphereMQ, but based on my design experience I decided to use temporary dynamic queues for scalability and performance reasons. Should this be reviewed and use static queues for response ? |
Not on the face of it IMHO. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
psujeethkumar |
Posted: Tue Sep 08, 2015 8:07 am Post subject: |
|
|
Novice
Joined: 08 Sep 2015 Posts: 13
|
Quote: |
Why do you not suspect that when the MQOPEN fails with the 2042 error, the queue is not created and the reply then fails with a 2085 trying to use the non-existent queue.
|
In the third log ( for 2085) :
Code: |
com.ibm.msg.client.jms.DetailedInvalidDestinationException: JMSWMQ2008: Failed to open MQ queue 'AMQ.55ED865B02BF1620'. |
From this I understood that, the consumer application created a temporary queue and sent to the web service so that it replies on this queue. but "somehow" this queue is deleted (may be due to consumer closed the session ?) and web service is trying to open this queue and send response.
For 2042 :
The knowledge center already address this problem here . I followed the configuring temporary queues creatin steps described there but no luck
Also, for the local queue I set Sharability = Not Shareable and Default input option = Input Shared. Could it be wrong with these settings ? |
|
Back to top |
|
 |
Vitor |
Posted: Tue Sep 08, 2015 8:43 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
psujeethkumar wrote: |
From this I understood that, the consumer application created a temporary queue and sent to the web service so that it replies on this queue. but "somehow" this queue is deleted (may be due to consumer closed the session ?) and web service is trying to open this queue and send response. |
So you've completely discounted the possibility that the 2042 error prevented the queue being created in the first place, and are confident it's being closed and deleted? Okay.
psujeethkumar wrote: |
For 2042 :
The knowledge center already address this problem here . |
From the link you posted:
Quote: |
Scenario: This exception message occurs when the following conditions are met: 1.You have a message flow containing a SOAPRequest node that is using the JMS Transport
|
I thought you had a SOAPInput node, not a SOAPRequest node.
psujeethkumar wrote: |
Also, for the local queue I set Sharability = Not Shareable and Default input option = Input Shared. Could it be wrong with these settings ? |
What local queue? You indicated that you'd defined a model queue, not a local queue. What is the local queue and what is it's purpose? Is it the queue named here:
psujeethkumar wrote: |
Code: |
Failed to open MQ queue 'Contract.QueryCommercialContract.1.0'. |
|
_________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
fjb_saper |
Posted: Tue Sep 08, 2015 9:03 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
psujeethkumar wrote: |
Also, for the local queue I set Sharability = Not Shareable and Default input option = Input Shared. Could it be wrong with these settings ? |
Why would you expect it to be OK to set the queue's shareability attribute to false when you plainly expect to share it? This is the reason for your object in USE... Make sure that the model queue has all the default model attributes...
Now the 2085 is a little bit more tricky... You should be using a JMSReplyTo destination from the request message. This would take care of the fact that the queue may not be on the same qmgr... HOWEVER you will also need a default path for your reply...
Have fun  _________________ MQ & Broker admin |
|
Back to top |
|
 |
psujeethkumar |
Posted: Thu Sep 10, 2015 2:44 am Post subject: |
|
|
Novice
Joined: 08 Sep 2015 Posts: 13
|
OK. Now, I have following settings :
For local queue :
Shareable : true
Input open option : Input Shared.
For model queue (SYSTEM.JMS.MODEL.QUEUE) :
Shareability : true
Input open options : Input Shared.
On main message flow - SOAP Input node :
Additional instances pool : use pool associated to Node
Additional Instances number : 10
When bulk number of soap requests made, say 1000 messages
Following error occurs occassionaly,
In integration server log :
Code: |
com.ibm.msg.client.jms.DetailedInvalidDestinationException: JMSWMQ2008: Failed to open MQ queue 'AMQ.55ED865B02412720'.
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.
Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2085' ('MQRC_UNKNOWN_OBJECT_NAME').
com.ibm.msg.client.jms.DetailedIllegalStateException: JMSCC0020: This session is closed.
An application called a method that must not be used after the session is closed.
Ensure that the session is not closed before calling the method.
|
In mesage flow excetion log :
Code: |
<?xml version="1.0" encoding="UTF-8"?>
<File>F:\build\slot1\S900_P\src\WebServices\WSLibrary\ImbSOAPReplyNode.cpp</File>
<Line>397</Line>
<Function>ImbSOAPReplyNode::evaluate</Function>
<Type>ComIbmSOAPReplyNode</Type>
<Name>be/edfluminus/interaction/managecustomerinteraction/ManageCustomerInteraction#FCMComposite_1_7.be
/edfluminus/interaction/managecustomerinteraction/createcustomerinteraction/CreateCustomerInteraction#FCMComposite_1_6</Name>
<Label>be.edfluminus.interaction.managecustomerinteraction.ManageCustomerInteraction.be
/edfluminus/interaction/managecustomerinteraction/createcustomerinteraction/CreateCustomerInteraction.Success Reply</Label>
<Catalog>BIPmsgs</Catalog>
<Severity>3</Severity>
<Number>3752</Number>
<Text>Error occurred in ImbSOAPReplyHelper::makeSOAPReply()</Text>
<RecoverableException>
<File>F:\build\slot1\S900_P\src\WebServices\WSLibrary\ImbSOAPReplyHelper.cpp</File>
<Line>781</Line>
<Function>ImbSOAPReplyHelper::makeSOAPReply</Function>
<Type/>
<Name/>
<Label/>
<Catalog>BIPmsgs</Catalog>
<Severity>3</Severity>
<Number>3184</Number>
<Text>Warning: unable to send reply.</Text>
<Insert>
<Type>5</Type>
<Text>jms:jndi:Interaction.ManageCustomerInteraction.1.0</Text>
</Insert>
</RecoverableException>
|
Quote: |
Now the 2085 is a little bit more tricky... You should be using a JMSReplyTo destination from the request message. This would take care of the fact that the queue may not be on the same qmgr... HOWEVER you will also need a default path for your reply...
|
How can I use temporary queue name in the JMSReplyTo ? |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu Sep 10, 2015 4:06 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
your 2085 object does not exist is probably due to the fact that your operation timed out. Once the requester stops listening it closes the session and this terminates any temporary queues created by that session.
Thus when your reply finally is ready to be sent the replyto destination no longer exists...
Working as designed...
Have fun  _________________ MQ & Broker admin |
|
Back to top |
|
 |
psujeethkumar |
Posted: Thu Sep 10, 2015 6:11 am Post subject: |
|
|
Novice
Joined: 08 Sep 2015 Posts: 13
|
I am sorry, but with the same settings on local and model queue the issue still persists.
Code: |
Exception in thread "Thread-113" 2015-09-10 16:04:54.194 131 org.apache.axis2.AxisFault: Error: Trying to send a message when an attempt to send a reply has already been made. A previous attempt to send a reply may have been made, but the client connection canot be reused.
2015-09-10 16:04:54.194 131 at com.ibm.broker.axis2.Axis2Invoker.sendReplyInternalNotThroughPipeline(Axis2Invoker.java:1470)
2015-09-10 16:04:54.195 131 at com.ibm.broker.axis2.Axis2Invoker.sendReplyDataSoap(Axis2Invoker.java:1127)
2015-09-10 16:04:54.195 131 at com.ibm.broker.plugin.MbOutputTerminal._propagate(Native Method)
....
....
2015-09-10 16:04:54.608 128 com.ibm.msg.client.jms.DetailedIllegalStateException: JMSWMQ2008: Failed to open MQ queue 'Contract.QueryCommercialContract.1.0'.
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.
....
....
2015-09-10 16:04:54.612 128 Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2042' ('MQRC_OBJECT_IN_USE').
2015-09-10 16:04:54.612 128 at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:209)
2015-09-10 16:04:54.612 128 ... 15 more
Exception in thread "Thread-111" 2015-09-10 16:04:57.115 128 BIP3619E: com.ibm.broker.axis2.MbSoapException: Exception getting SOAP JMS message.
2015-09-10 16:04:57.115 128 at com.ibm.broker.axis2.JMSNodeRegistrationUtil.getDataFromJMS(JMSNodeRegistrationUtil.java:599)
|
In message flow error log :
Code: |
<Text>Warning: unable to send reply.</Text>
|
The request timeout in SOAPRequest node (The consumer of web service using JMS) is set tp 120 seconds!
It looks like issue is due to other reason than consumer wait time AND the settings on the queue. |
|
Back to top |
|
 |
psujeethkumar |
Posted: Thu Sep 10, 2015 7:02 am Post subject: |
|
|
Novice
Joined: 08 Sep 2015 Posts: 13
|
Another observation in debug mode :
From time to time For every request debugger halts at the class :
Code: |
JMSNodeRegistrationUtil.getDataFromJMS(JMSClientInputReplyHelper, int, boolean) line: 604
|
Right after this I see the previous exception log in integration server log (object in use...)
Could it be issue with the version of IIB 9.0.0.2 ? |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu Sep 10, 2015 6:34 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
I doubt it very much. Much more likely, you have somewhere defined shareability = false. So there is already a process attached to the queue and you can not longer access the queue. Check all the relevant aliases pointing to that queue.
This has to do with your access to the queue and the definition of the queue.
Are you accessing the queue somewhere in mode not shared? That too might do it.
Have you looked at the fixes included in 9..0.0.3 and do they include anything in that area?  _________________ MQ & Broker admin |
|
Back to top |
|
 |
psujeethkumar |
Posted: Fri Sep 11, 2015 3:53 am Post subject: |
|
|
Novice
Joined: 08 Sep 2015 Posts: 13
|
Ok. It is fixed now.
First, I created a fresh integration node, integration server, queues etc and did a load test with burst of 50 messages for 5 secs and with delay of 5 seconds for 60 seconds. And no message is lost !
No errors found in integration server and message flow logs.
After that, I deleted the local and JMS queues and recreated them and did same load test. All SOAP requests processed correctly.
Thanks for tips for investigation friends!
Happy weekend ! |
|
Back to top |
|
 |
|