Author |
Message
|
matuwe |
Posted: Sun Sep 05, 2010 11:24 pm Post subject: SOAP reply identifier |
|
|
 Master
Joined: 05 Dec 2007 Posts: 296
|
Please help. I have a weird problem. I have a couple of flows.
First flow SOAP input >> COMPUTE >> MQ
some few more flows
REsponse flow MQ >> COMPUTE >> SOAP Reply
In my input flow I store the replyidentifier as part of my message XMLNSC/INPUT/replyid
Code: |
SET OutputRoot.XMLNSC.INPUTS.replyIdentifier = CAST(InputLocalEnvironment.Destination.SOAP.Reply.ReplyIdentifier AS CHARACTER); |
and on the output flow I am trying to put it back
Code: |
SET OutputLocalEnvironment.Destination.SOAP.Reply.ReplyIdentifier = CAST(InputRoot.XMLNSC.INPUTS.replyIdentifier AS BLOB );
|
I get an error Invalid Handle TID: Message does not contain a valid SOAP Reply Identifier. Invalid Handle
This code works perfect on my windows environment, but doesn't work on AIX box. I am using broker 7.001 on my windows and 7000 on my AIX.
What am I doing wrong? I also tried this with encoding and charset |
|
Back to top |
|
 |
kimbert |
Posted: Mon Sep 06, 2010 7:26 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
We can't do your job for you. What steps have you taken to diagnose the problem so far? What are the results of the CASTs on each platform? What values of encoding and ccsid did you select? |
|
Back to top |
|
 |
rekarm01 |
Posted: Mon Sep 06, 2010 12:08 pm Post subject: Re: SOAP reply identifier |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 1415
|
matuwe wrote: |
I also tried this with encoding and charset. |
That shouldn't be necessary.
kimbert wrote: |
What are the results of the CASTs on each platform? |
A usertrace can answer this. |
|
Back to top |
|
 |
matuwe |
Posted: Tue Sep 07, 2010 12:53 am Post subject: |
|
|
 Master
Joined: 05 Dec 2007 Posts: 296
|
Hi I have added trace on my input flow, to read the original replyID and after doing the cast to CHAR. The values looks identical on both environments.
replyIdentifier 534f41500000000200000000000000000000000000001b55
and after the cast back to blob The value looks OK again
534f41500000000200000000000000000000000000001b55.
I am not sure if what I am doing is maybe incorrect as I am currently only saving the replyid and not the whole localEnvironment or HTTPHeaders. Do I need to set the message property replyProtocol
The trace node shows the values being the same. |
|
Back to top |
|
 |
mgk |
Posted: Tue Sep 07, 2010 1:44 am Post subject: |
|
|
 Padawan
Joined: 31 Jul 2003 Posts: 1642
|
It looks like you are doing this correctly as you only need to store (and restore)the ReplyIdentifier, and nothing else needs to be set (other than a response msg itself). Therefore, check the ComputeMode on the Compute node that sets the Reply ID before the SOAPReply node, to make sure it includes the LocalEnvrionment. If it does, post the output of a trace node positioned just before the SOAPReply node that shows the LocalEnvrionment tree.
Kind Regards, _________________ MGK
The postings I make on this site are my own and don't necessarily represent IBM's positions, strategies or opinions. |
|
Back to top |
|
 |
matuwe |
Posted: Tue Sep 07, 2010 2:19 am Post subject: |
|
|
 Master
Joined: 05 Dec 2007 Posts: 296
|
Thanks for the response
This is the trace from SOAP INPUT >> SOAP EXTRACT
and the second shouws the field I am using to store the replyID
Code: |
( ['SOAPRoot' : 0x1160c5890]
(0x01000000:Name ):Properties = ( ['SOAPPROPERTYPARSER' : 0x11611d330]
(0x03000000:NameValue):MessageSet = 'DBLookup' (CHARACTER)
(0x03000000:NameValue):MessageType = '' (CHARACTER)
(0x03000000:NameValue):MessageFormat = '' (CHARACTER)
(0x03000000:NameValue):Encoding = 273 (INTEGER)
(0x03000000:NameValue):CodedCharSetId = 1208 (INTEGER)
(0x03000000:NameValue):Transactional = FALSE (BOOLEAN)
(0x03000000:NameValue):Persistence = FALSE (BOOLEAN)
(0x03000000:NameValue):CreationTime = GMTTIMESTAMP '2010-09-07 10:08:47.466839' (GMTTIMESTAMP)
(0x03000000:NameValue):ExpirationTime = -1 (INTEGER)
(0x03000000:NameValue):Priority = 0 (INTEGER)
(0x03000000:NameValue):ReplyIdentifier = X'000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):ReplyProtocol = 'SOAP_AXIS2' (CHARACTER)
(0x03000000:NameValue):Topic = NULL
(0x03000000:NameValue):ContentType = 'text/xml; charset=utf-8' (CHARACTER)
(0x03000000:NameValue):IdentitySourceType = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceToken = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourcePassword = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceIssuedBy = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedType = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedToken = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedPassword = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedIssuedBy = '' (CHARACTER)
)
( ['MQROOT' : 0x1160db450]
(0x01000000:Name):Destination = (
(0x01000000:Name):SOAP = (
(0x01000000:Name):Reply = (
(0x03000000:NameValue):ReplyIdentifier = X'534f41500000000000000000000000080000000000001b55' (BLOB)
)
)
(0x01000000:Name):RouterList = (
(0x01000000:Name):DestinationData = (
(0x03000000:NameValue):labelName = 'executeService' (CHARACTER)
)
)
)
(0x01000000:Name):SOAP = (
(0x01000000:Name):Input = (
(0x01000000:Name):Transport = (
(0x01000000:Name):HTTP = (
(0x03000000:NameValue):MaxClientWaitTime = 180 (INTEGER)
)
)
)
)
(0x01000000:Folder):XMLNSC = ( ['xmlnsc' : 0x116255910]
(0x01000000:Folder):INPUTS = (
(0x03000000:PCDataField):replyIdentifier = X'534f41500000000000000000000000080000000000001b55' (BLOB)
(0x03000000:PCDataField):SOAPAction = 'executeService' (CHARACTER)
)
)
----------------------------------------------------------------------------------------------------------
--Output
( ['MQROOT' : 0x113e283d0]
(0x01000000:Name ):Properties = ( ['MQPROPERTYPARSER' : 0x11580f9f0]
(0x03000000:NameValue):MessageSet = '' (CHARACTER)
(0x03000000:NameValue):MessageType = '' (CHARACTER)
(0x03000000:NameValue):MessageFormat = '' (CHARACTER)
(0x03000000:NameValue):Encoding = 273 (INTEGER)
(0x03000000:NameValue):CodedCharSetId = 1208 (INTEGER)
(0x03000000:NameValue):Transactional = TRUE (BOOLEAN)
(0x03000000:NameValue):Persistence = FALSE (BOOLEAN)
(0x03000000:NameValue):CreationTime = GMTTIMESTAMP '2010-09-07 10:09:50.010' (GMTTIMESTAMP)
(0x03000000:NameValue):ExpirationTime = -1 (INTEGER)
(0x03000000:NameValue):Priority = 0 (INTEGER)
(0x03000000:NameValue):ReplyIdentifier = X'000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):ReplyProtocol = 'MQ' (CHARACTER)
(0x03000000:NameValue):Topic = NULL
(0x03000000:NameValue):ContentType = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceType = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceToken = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourcePassword = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceIssuedBy = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedType = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedToken = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedPassword = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedIssuedBy = '' (CHARACTER)
)
(0x01000000:Folder):XMLNSC = ( ['xmlnsc' : 0x113e286b0]
(0x03000000:PCDataField)http://schemas.xmlsoap.org/soap/envelope/:Envelope = NULL
(
(0x03000102:NamespaceDecl)xmlns:soapenc = 'http://schemas.xmlsoap.org/soap/encoding/' (CHARACTER)
(0x03000102:NamespaceDecl)xmlns:soapenv = 'http://schemas.xmlsoap.org/soap/envelope/' (CHARACTER)
(0x03000102:NamespaceDecl)xmlns:xsd = 'http://www.w3.org/2001/XMLSchema' (CHARACTER)
(0x03000102:NamespaceDecl)xmlns:xsi = 'http://www.w3.org/2001/XMLSchema-instance' (CHARACTER)
(0x03000000:PCDataField )http://schemas.xmlsoap.org/soap/envelope/:Body = NULL
(
(0x03000000:PCDataField)http://webservice.com:executeServiceResponse = 'TRUE' (CHARACTER)
(
(0x03000102:NamespaceDecl)http://www.w3.org/2000/xmlns/:NS1 = 'http://webservice.com' (CHARACTER)
)
)
)
)
)
( ['MQROOT' : 0x113e289b0]
(0x01000000:Name):Destination = (
(0x01000000:Name):SOAP = (
(0x01000000:Name):Reply = (
(0x03000000:NameValue):ReplyIdentifier = X'534f41500000000000000000000000080000000000001b55' (BLOB)
)
)
)
)
|
|
|
Back to top |
|
 |
mgk |
Posted: Tue Sep 07, 2010 2:39 am Post subject: |
|
|
 Padawan
Joined: 31 Jul 2003 Posts: 1642
|
This looks about right, so just to check:
1: Is the "Output" part of your trace from just before the SOAPReply node?
2: Is the SOAPReply node in the SAME execution group as the SOAPInput node?
Kind Regards, _________________ MGK
The postings I make on this site are my own and don't necessarily represent IBM's positions, strategies or opinions. |
|
Back to top |
|
 |
matuwe |
Posted: Tue Sep 07, 2010 3:06 am Post subject: |
|
|
 Master
Joined: 05 Dec 2007 Posts: 296
|
My Input is
SOAP INPUT >> SOAP EXTRACT >> TRACE >> COMPUTE >> TRACE >> MQ OUT
My output is
MQ Input >> Compute Node >> SOAP ENVELOP>> TRACE >> SOAP REPLY.
There are about four flows between the input and the final Output flow. |
|
Back to top |
|
 |
mgk |
Posted: Tue Sep 07, 2010 4:08 am Post subject: |
|
|
 Padawan
Joined: 31 Jul 2003 Posts: 1642
|
Quote: |
There are about four flows between the input and the final Output flow |
But are ALL the flows in the same Execution Group? _________________ MGK
The postings I make on this site are my own and don't necessarily represent IBM's positions, strategies or opinions. |
|
Back to top |
|
 |
matuwe |
Posted: Tue Sep 07, 2010 4:12 am Post subject: |
|
|
 Master
Joined: 05 Dec 2007 Posts: 296
|
No they are in three execution groups
This is the exception stack trace
Quote: |
)
( ['MQROOT' : 0x1144a06b0]
(0x01000000:Name):RecoverableException = (
(0x03000000:NameValue):File = '/build/S000_P/src/DataFlowEngine/ImbDataFlowNode.cpp' (CHARACTER)
(0x03000000:NameValue):Line = 1073 (INTEGER)
(0x03000000:NameValue):Function = 'ImbDataFlowNode::createExceptionList' (CHARACTER)
(0x03000000:NameValue):Type = 'ComIbmSOAPReplyNode' (CHARACTER)
(0x03000000:NameValue):Name = 'DelMechOutputSOAP#FCMComposite_1_6' (CHARACTER)
(0x03000000:NameValue):Label = 'DelMechOutputSOAP.SOAP Reply' (CHARACTER)
(0x03000000:NameValue):Catalog = 'BIPmsgs' (CHARACTER)
(0x03000000:NameValue):Severity = 3 (INTEGER)
(0x03000000:NameValue):Number = 2230 (INTEGER)
(0x03000000:NameValue):Text = 'Node throwing exception' (CHARACTER)
(0x01000000:Name ):RecoverableException = (
(0x03000000:NameValue):File = '/build/S000_P/src/WebServices/WSLibrary/ImbSOAPReplyHelper.cpp' (CHARACTER)
(0x03000000:NameValue):Line = 317 (INTEGER)
(0x03000000:NameValue):Function = 'ImbSOAPReplyHelper::makeSOAPReply' (CHARACTER)
(0x03000000:NameValue):Type = '' (CHARACTER)
(0x03000000:NameValue):Name = '' (CHARACTER)
(0x03000000:NameValue):Label = '' (CHARACTER)
(0x03000000:NameValue):Catalog = 'BIPmsgs' (CHARACTER)
(0x03000000:NameValue):Severity = 3 (INTEGER)
(0x03000000:NameValue):Number = 3745 (INTEGER)
(0x03000000:NameValue):Text = 'Message does not contain a valid SOAP Reply Identifier. Invalid Handle' (CHARACTER)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = '534f41500000000400000000000000000000000000001c20' (CHARACTER)
)
(0x01000000:Name ):RecoverableException = (
(0x03000000:NameValue):File = '/build/S000_P/src/WebServices/WSLibrary/ImbSOAPHandleManager.cpp' (CHARACTER)
(0x03000000:NameValue):Line = 1619 (INTEGER)
(0x03000000:NameValue):Function = 'ImbSOAPHandleManager::retrieveInputNodeMessageHandle' (CHARACTER)
(0x03000000:NameValue):Type = '' (CHARACTER)
(0x03000000:NameValue):Name = '' (CHARACTER)
(0x03000000:NameValue):Label = '' (CHARACTER)
(0x03000000:NameValue):Catalog = 'BIPmsgs' (CHARACTER)
(0x03000000:NameValue):Severity = 3 (INTEGER)
(0x03000000:NameValue):Number = 3740 (INTEGER)
(0x03000000:NameValue):Text = 'ERROR, Invalid Handle TID' (CHARACTER)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = '534f41500000000400000000000000000000000000001c20' (CHARACTER)
)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 2 (INTEGER)
(0x03000000:NameValue):Text = '5' (CHARACTER)
)
)
)
)
)
|
|
|
Back to top |
|
 |
mgk |
Posted: Tue Sep 07, 2010 4:12 am Post subject: |
|
|
 Padawan
Joined: 31 Jul 2003 Posts: 1642
|
Quote: |
My output is
MQ Input >> Compute Node >> SOAP ENVELOP>> TRACE >> SOAP REPLY. |
Also, you can remove the SOAP Envelope node as the SOAPReply node will automatically add an envelope if one is not present, so you should not need the SOAP Envelope node in this case. _________________ MGK
The postings I make on this site are my own and don't necessarily represent IBM's positions, strategies or opinions. |
|
Back to top |
|
 |
mqjeff |
Posted: Tue Sep 07, 2010 4:26 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
matuwe wrote: |
No they are in three execution groups |
The SOAPReply node needs to be in the same EG as the SOAPInput that it is Replying to.
The rest of your flows can be willy-nilly as you like, but the SOAP engine is per-execution group and there is no connection sharing between processes. |
|
Back to top |
|
 |
matuwe |
Posted: Tue Sep 07, 2010 4:45 am Post subject: |
|
|
 Master
Joined: 05 Dec 2007 Posts: 296
|
Haaapppppppppyyyyyyy!!!!! amazing stuff. It works. I wouldn't have guessed this. I moved the response to the same execution group as Input and it works. And that is how is was deployed on local windows box..
thanks a million times.... Thanks
Very much appreciated  |
|
Back to top |
|
 |
mqjeff |
Posted: Tue Sep 07, 2010 4:56 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
|
Back to top |
|
 |
nathanw |
Posted: Tue Sep 07, 2010 5:09 am Post subject: |
|
|
 Knight
Joined: 14 Jul 2004 Posts: 550
|
matuwe wrote: |
Haaapppppppppyyyyyyy!!!!! amazing stuff. It works. I wouldn't have guessed this. I moved the response to the same execution group as Input and it works. And that is how is was deployed on local windows box..
thanks a million times.... Thanks
Very much appreciated  |
Sorry can you confirm something
On your local windows box you have the flows in the same execution group, but when deployed you put them in different ones?
When testing locally it worked but when on other box it didnt.
Personally the first thing I look at in a situation like that is the environment ie what is different, maybe that woudl have showed you the problem and the resolution _________________ Who is General Failure and why is he reading my hard drive?
Artificial Intelligence stands no chance against Natural Stupidity.
Only the User Trace Speaks The Truth  |
|
Back to top |
|
 |
|