Author |
Message
|
chetu777 |
Posted: Wed Apr 21, 2010 4:13 am Post subject: SOAP message parser exception |
|
|
Acolyte
Joined: 07 Sep 2009 Posts: 59
|
Hi All,
I am facing a problem in catching a SOAP message in Error Handler once the SOAP input node has thrown a perser exception.
Flow as below:-
SOAP INPUT ----> Compute -----> SOAP Reply
\
\
\____>Error Handler
If there is any SOAP parser exception in SOAP Input node, then the exception is passed to the Error Handler subflow but the original SOAP input message is lost in SOAP Input node itself, due to parser exception.
But according to my requirement I need to catch the original SOAP input message for error handling.
Does any one have any idea so that I can retain the message somehow and then pass it to the error handler. |
|
Back to top |
|
 |
smdavies99 |
Posted: Wed Apr 21, 2010 6:02 am Post subject: |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
Copy it to the Environment Folder? _________________ 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 |
|
 |
chetu777 |
Posted: Wed Apr 21, 2010 11:33 pm Post subject: |
|
|
Acolyte
Joined: 07 Sep 2009 Posts: 59
|
Can you kindly brief me about it in depth.
Coz atleast to catch the SOAP message in environment folder, the message should be passed out from the SOAP input node. But due to parser exception the the SOAP message is lost in SOAP input node itself.
I want to know how to catch on to the SOAP message for error handling after parser exception. |
|
Back to top |
|
 |
smdavies99 |
Posted: Thu Apr 22, 2010 6:39 am Post subject: |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
You can have multiple sub-folders of different message domains in the Environment folder.
Code: |
SET Environment.Original.Message.BLOB.BLOB = InputRoot.BLOB.BLOB;
etc...
.
.
.
Somewhere else.
SET Environment.SOAPMESSAGE.Soap = Create Parse.....;
|
I suggest you try it but put a trace node (setup to output the ${Environment}) before your Soap OUtput Node (& in other places). You might be surprised by what you see...
Oh, and disable the debugger while you are doing it...
A little experimentation on your part will save me from getting RSI explaining it all _________________ 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 |
|
 |
mqjeff |
Posted: Thu Apr 22, 2010 7:29 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
Right, so.
NEVER connect the failure terminal. It interefers with stuff and if you cause an exception, then you've made a loop that will eat your CPU.
If the Broker can't parse the message, then there's no guarantee that there is a message in the first place.
Where are you looking for the message, and how?
If you have an absolute need to accomplish this, regardless of the circumstances of the message, then you can either put a new flow with HTTPInput->try/catch->HTTPRequest->HTTPReply and then call your SOAP flow from HTTPRequest and handle the resulting fault when the message can't be parsed. You'll want to use the BLOB domain on the HTTPInput. |
|
Back to top |
|
 |
|