Author |
Message
|
sunny_30 |
Posted: Wed Mar 11, 2015 1:52 pm Post subject: Environment tree lost between pair of SoapAsynchronous nodes |
|
|
 Master
Joined: 03 Oct 2005 Posts: 258
|
Have a pair of SOAP Asynchronous Request and Response configured in the same flow. By the time response is processed out of Response node the Environment, Local Environment trees are lost. Its IBv9002. Is this an expected behavior or is there some setting required so as to preserve the data?
In a single flow I have it this way:
HttpInput -> soapAsynchRequest
soapAsynchResponse-> HttpReply
The correlation between soap nodes seem to be happening using: MessageCorrelId field sent in WSA. Same is copied into a new LocalEnv tree/field after the response node.
However the ReplyIdentifier that seems to be necessary for HttpReply node is lost as the whole local-env tree is gone. Getting a context not found error. The LocalEnv tree/fields that were present prior to soapAsynchreq node are lost after the response node processing kicks in.
How do I solve this issue? Do I need to save the context to queue & MQget ? Can I save into a shared variable as a key-value pair of MessageCorrelId,ReplyIdentifier ? Thanks for your help |
|
Back to top |
|
 |
Esa |
Posted: Wed Mar 11, 2015 10:32 pm Post subject: |
|
|
 Grand Master
Joined: 22 May 2008 Posts: 1387 Location: Finland
|
SOAP asych nodes do not run on the same thread, that is why everything is lost. Only the connection handle is passed to the response thread (when using http).
If you need to preserve something, you need to explicitly put it in OutputLocalEnvironment.Destination.SOAP.Request.UserContext. Then you can retrieve it from LocalEnvironment.SOAP.Response.UserContext.
This is explained in the Knowledge Center. |
|
Back to top |
|
 |
sunny_30 |
Posted: Thu Mar 12, 2015 8:07 am Post subject: |
|
|
 Master
Joined: 03 Oct 2005 Posts: 258
|
Thanks a lot !
I populated the SOAP.Response.UserContext but it wasnt returned back. May be thats coz the WebServer doesnt supprt WS-A.
on soap AsynchReq node i checked "use http asynch req-response" property
I copied the httpInput created Destination.HTTP.ReplyIdentifier into localenv.Destination.SOAP.Reply.ReplyIdentifier prior to req node and it came back. Thanks again |
|
Back to top |
|
 |
Esa |
Posted: Thu Mar 12, 2015 8:57 am Post subject: |
|
|
 Grand Master
Joined: 22 May 2008 Posts: 1387 Location: Finland
|
sunny_30 wrote: |
Thanks a lot !
I populated the SOAP.Response.UserContext but it wasnt returned back. May be thats coz the WebServer doesnt supprt WS-A.
on soap AsynchReq node i checked "use http asynch req-response" property
|
You should populate ...Request.UserContext and get it back in ...Response.UserContext. |
|
Back to top |
|
 |
sunny_30 |
Posted: Thu Mar 12, 2015 10:08 am Post subject: |
|
|
 Master
Joined: 03 Oct 2005 Posts: 258
|
Ahh. I guess I had a typo. That worked. Thanks !! |
|
Back to top |
|
 |
sunny_30 |
Posted: Thu Mar 12, 2015 4:10 pm Post subject: |
|
|
 Master
Joined: 03 Oct 2005 Posts: 258
|
Hi
Is it possible to pass a tree with multiple elements in UserContext.
I can think of concatenating into a single string using a delimiter |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu Mar 12, 2015 6:31 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
sunny_30 wrote: |
Hi
Is it possible to pass a tree with multiple elements in UserContext.
I can think of concatenating into a single string using a delimiter |
Why? Just serialize the tree before passing it. On retrieval you will have to parse the element you retrieve. Have fun  _________________ MQ & Broker admin |
|
Back to top |
|
 |
sunny_30 |
Posted: Fri Mar 13, 2015 8:09 am Post subject: |
|
|
 Master
Joined: 03 Oct 2005 Posts: 258
|
Good idea. Thank you !
Looks UserContext has to be BLOB only so I placed the bitstream there |
|
Back to top |
|
 |
|