Author |
Message
|
Lucky |
Posted: Tue Jan 15, 2013 4:20 am Post subject: Message Broker Error Code 3745 |
|
|
Apprentice
Joined: 06 Feb 2007 Posts: 35
|
Hi All..
I was trying to work on a Migration project, where an exsisting HTTP node had to be replaced by an SOAP node. I'm done with my code changes.
I have also CASTed the SOAP Identifier as CHAR in REQUEST flow and CASTed the SOAP Identifier as BLOB on the response side as suggested.
But when the flow is going to the SOAP reply node it is throwing out two exceptions
Error 3743->ERROR,Handle Timed-Out
Error 3745->Message does not contain a valid SOAP identifier. InvalidHandle.
I communication pattern between req and response side is :
SOAP Input--->MQ Out-->MQ In----->SOAP Reply..
Please help me on this regard..As this is a urgent and important task..  |
|
Back to top |
|
 |
McueMart |
Posted: Tue Jan 15, 2013 4:24 am Post subject: |
|
|
 Chevalier
Joined: 29 Nov 2011 Posts: 490 Location: UK...somewhere
|
Add a Trace node after your SOAP Input and before your SOAP Reply node and trace the ${Root} pattern and post them here. |
|
Back to top |
|
 |
lancelotlinc |
Posted: Tue Jan 15, 2013 6:40 am Post subject: Re: Message Broker Error Code 3745 |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
Lucky wrote: |
I have also CASTed the SOAP Identifier as CHAR in REQUEST flow and CASTed the SOAP Identifier as BLOB on the response side as suggested. |
Not sure who suggested this or why? If you intend the ReplyId be carried through the MQ package, many people use MQMD.CorrelId field for this.
Lucky wrote: |
I communication pattern between req and response side is :
SOAP Input--->MQ Out-->MQ In----->SOAP Reply.. |
Between SOAPInput and MQOutput, you need a compute node. Between MQGet and SoapReqly, you need another compute node. In the latter, you need to translate the message tree to conform to the response message format as described by your XSD file.
It's helpful to put a Trace node before and after each major node and separate Trace nodes after each major node that has more than one terminal ('Out', 'Catch', 'Fault', etc). Each node should point to a different file on disk, don't point more than one Trace node to the same file.
If you are using MQInput in the same message flow as SoapInput, this is wrong. Swap the MQInput for an MQGet. Be sure Transactionality is set to 'no' for all nodes. _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
lancelotlinc |
Posted: Tue Jan 15, 2013 7:02 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
McueMart wrote: |
${Root} pattern |
Root by itself is hardly sufficient.
Code: |
Root:
${Root}
===
LocalEnvironment:
${LocalEnvironment}
===
Environment:
${Environment}
===
ExceptionList:
${ExceptionList}
===
${CURRENT_TIMESTAMP}
======================= |
_________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
Lucky |
Posted: Wed Jan 16, 2013 2:41 am Post subject: |
|
|
Apprentice
Joined: 06 Feb 2007 Posts: 35
|
Hi,
I think i was not able to convey my error properly to you.. This post may give you a better idea of error that i am facing.
We are trying to construct a SOAP provider flow using SOAP Input and SOAP reply nodes.
We have two flows as a part of provider service.
Request Flow:
SOAP Input -> Compute -> Aggregate Control Node Compute(Stores Original Request) ->MQ Out(Original Request)-> Aggregate Request Node
MQ Out(Service Request)-> Aggregate Request Node
Response Flow:
MQ Input(Original Request)
MQ Input (Service Response) Aggreate Reply Node -> Compute2 -> SOAP Reply
We are setting SOAP Request Id as below in the compute of Request Flow and storing the same in MQ Out(Original Request).
SET OutputRoot.XMLNSC.StateMessage.SOAPRequestId = CAST(InputLocalEnvironment.Destination.SOAP.Reply.ReplyIdentifier AS CHARACTER);
In response flow, we are setting compute 2 as below.
SET soapReplyId = InputRoot.ComIbmAggregateReplyBody.stateMessage.XMLNSC.StateMessage. SOAPRequestId;
SET OutputLocalEnvironment.Destination.HTTP.RequestIdentifier = CAST(soapReplyId AS BLOB)
We are getting the below error in SOAP Reply node when we test the service.
Error 3743->ERROR,Handle Timed-Out
Error 3745->Message does not contain a valid SOAP identifier. InvalidHandle. |
|
Back to top |
|
 |
smdavies99 |
Posted: Wed Jan 16, 2013 2:46 am Post subject: |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
Are you doing the tip that is mentioned in a lot of other posts here about preserving things like the SOAP Identifier across an aggregation?
A little reading on the subject may prove quite enlightening. _________________ WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995
Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions. |
|
Back to top |
|
 |
lancelotlinc |
Posted: Wed Jan 16, 2013 5:33 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
Lucky wrote: |
Hi,
I think i was not able to convey my error properly to you.. This post may give you a better idea of error that i am facing.
We are trying to construct a SOAP provider flow using SOAP Input and SOAP reply nodes.
We have two flows as a part of provider service.
Request Flow:
SOAP Input -> Compute -> Aggregate Control Node Compute(Stores Original Request) ->MQ Out(Original Request)-> Aggregate Request Node
MQ Out(Service Request)-> Aggregate Request Node
Response Flow:
MQ Input(Original Request)
MQ Input (Service Response) Aggreate Reply Node -> Compute2 -> SOAP Reply
We are setting SOAP Request Id as below in the compute of Request Flow and storing the same in MQ Out(Original Request).
SET OutputRoot.XMLNSC.StateMessage.SOAPRequestId = CAST(InputLocalEnvironment.Destination.SOAP.Reply.ReplyIdentifier AS CHARACTER);
In response flow, we are setting compute 2 as below.
SET soapReplyId = InputRoot.ComIbmAggregateReplyBody.stateMessage.XMLNSC.StateMessage. SOAPRequestId;
SET OutputLocalEnvironment.Destination.HTTP.RequestIdentifier = CAST(soapReplyId AS BLOB)
We are getting the below error in SOAP Reply node when we test the service.
Error 3743->ERROR,Handle Timed-Out
Error 3745->Message does not contain a valid SOAP identifier. InvalidHandle. |
Where do you put your Trace nodes? _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
fjb_saper |
Posted: Wed Jan 16, 2013 5:57 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Are you sure your cast as character does what you intend it to do/
What you want there is a hex representation of the byte values in the byte array...
What happens if you avoid the cast as character but do the cast to blob?  _________________ MQ & Broker admin |
|
Back to top |
|
 |
|