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 reply identifier

Post new topic  Reply to topic Goto page 1, 2  Next
 SOAP reply identifier « View previous topic :: View next topic » 
Author Message
matuwe
PostPosted: Sun Sep 05, 2010 11:24 pm    Post subject: SOAP reply identifier Reply with quote

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
View user's profile Send private message
kimbert
PostPosted: Mon Sep 06, 2010 7:26 am    Post subject: Reply with quote

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
View user's profile Send private message
rekarm01
PostPosted: Mon Sep 06, 2010 12:08 pm    Post subject: Re: SOAP reply identifier Reply with quote

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
View user's profile Send private message
matuwe
PostPosted: Tue Sep 07, 2010 12:53 am    Post subject: Reply with quote

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
View user's profile Send private message
mgk
PostPosted: Tue Sep 07, 2010 1:44 am    Post subject: Reply with quote

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
View user's profile Send private message
matuwe
PostPosted: Tue Sep 07, 2010 2:19 am    Post subject: Reply with quote

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
View user's profile Send private message
mgk
PostPosted: Tue Sep 07, 2010 2:39 am    Post subject: Reply with quote

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
View user's profile Send private message
matuwe
PostPosted: Tue Sep 07, 2010 3:06 am    Post subject: Reply with quote

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

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
View user's profile Send private message
matuwe
PostPosted: Tue Sep 07, 2010 4:12 am    Post subject: Reply with quote

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
View user's profile Send private message
mgk
PostPosted: Tue Sep 07, 2010 4:12 am    Post subject: Reply with quote

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
View user's profile Send private message
mqjeff
PostPosted: Tue Sep 07, 2010 4:26 am    Post subject: Reply with quote

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
View user's profile Send private message
matuwe
PostPosted: Tue Sep 07, 2010 4:45 am    Post subject: Reply with quote

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
View user's profile Send private message
mqjeff
PostPosted: Tue Sep 07, 2010 4:56 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

The SOAPReply node is typically used with the SOAPInput node, which can be included in the same message flow, or a different flow in the same execution group.

It could probably be worded stronger.
Back to top
View user's profile Send private message
nathanw
PostPosted: Tue Sep 07, 2010 5:09 am    Post subject: Reply with quote

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

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » SOAP reply identifier
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.