ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » SOAP / JMS with Temporary Queues

Post new topic  Reply to topic
 SOAP / JMS with Temporary Queues « View previous topic :: View next topic » 
Author Message
psujeethkumar
PostPosted: Tue Sep 08, 2015 7:36 am    Post subject: SOAP / JMS with Temporary Queues Reply with quote

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
View user's profile Send private message
Vitor
PostPosted: Tue Sep 08, 2015 7:53 am    Post subject: Re: SOAP / JMS with Temporary Queues Reply with quote

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
View user's profile Send private message
psujeethkumar
PostPosted: Tue Sep 08, 2015 8:07 am    Post subject: Reply with quote

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
View user's profile Send private message
Vitor
PostPosted: Tue Sep 08, 2015 8:43 am    Post subject: Reply with quote

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
View user's profile Send private message
fjb_saper
PostPosted: Tue Sep 08, 2015 9:03 am    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
psujeethkumar
PostPosted: Thu Sep 10, 2015 2:44 am    Post subject: Reply with quote

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
View user's profile Send private message
fjb_saper
PostPosted: Thu Sep 10, 2015 4:06 am    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
psujeethkumar
PostPosted: Thu Sep 10, 2015 6:11 am    Post subject: Reply with quote

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
View user's profile Send private message
psujeethkumar
PostPosted: Thu Sep 10, 2015 7:02 am    Post subject: Reply with quote

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
View user's profile Send private message
fjb_saper
PostPosted: Thu Sep 10, 2015 6:34 pm    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
psujeethkumar
PostPosted: Fri Sep 11, 2015 3:53 am    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » SOAP / JMS with Temporary Queues
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.