| Author | Message | 
		
		  | matuwe | 
			  
				|  Posted: Sun Sep 05, 2010 11:24 pm    Post subject: SOAP reply identifier |   |  | 
		
		  |  Master
 
 
 Joined: 05 Dec 2007Posts: 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 2003Posts: 5543
 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 2008Posts: 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 2007Posts: 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 2003Posts: 1647
 
 
 | 
			  
				| 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 2007Posts: 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 2003Posts: 1647
 
 
 | 
			  
				| 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 2007Posts: 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 2003Posts: 1647
 
 
 | 
			  
				| 
   
	| 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 2007Posts: 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 2003Posts: 1647
 
 
 | 
			  
				| 
   
	| 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 2008Posts: 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 2007Posts: 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 2008Posts: 17447
 
 
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | nathanw | 
			  
				|  Posted: Tue Sep 07, 2010 5:09 am    Post subject: |   |  | 
		
		  |  Knight
 
 
 Joined: 14 Jul 2004Posts: 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 |  | 
		
		  |  | 
		
		  |  |