Author |
Message
|
pottas |
Posted: Sun May 25, 2008 9:50 pm Post subject: SOAP Reply Node Message Validation |
|
|
 Disciple
Joined: 27 Oct 2005 Posts: 185 Location: South Africa
|
Hi,
I am running Broker 6.1. I have a flow that uses a SOAP Input and Reply Node. I am battling to get the flow to validate my message when I set the Reply node to 'Content and Value'.
I have a WSDL that I introduced to the flow that has the following settings:
Message Set supported domains: 'XMLNSC','SOAP'. In the WSDL I have a lot of structures that I need to validate but if I set the Reply Node to 'Content and Value', the flow pops out this error:
Quote: |
Text:CHARACTER:Validation is enabled but pre-processed schemas cannot be located for the specified message set
Insert
Type:INTEGER:5
Text:CHARACTER:ODO9LTS002001 |
So I introduced a RCD Node just before the SOAP Reply Node and it seems like even though I get an 'XML Parsing Error' in the debugger I don't get the Soap error returned to the requestor - the requestor gets only part of the message returned (as if the message was parsed only in part and that piece is returned to the requestor)
I would expect some sort of SOAP error that gives me the tag that is in error. I have tried other options (i.e. setting the validation to 'Content and Value' on the preceding Compute Node and setting the SOAP reply node to 'Inherit', etc.)
So I guess my question is - do I have to do something specific when I create the Message Set from the WSDL (some settings etc.) in order for it to give me a sensible response?
Or do I have to have some other setting on some node in my flow that would give me a Soap error returned. |
|
Back to top |
|
 |
pottas |
Posted: Sun May 25, 2008 10:39 pm Post subject: |
|
|
 Disciple
Joined: 27 Oct 2005 Posts: 185 Location: South Africa
|
Guys,
My apologies - I failed to mention that I set the RCD Node to the following settings:
Parse timing: Complete
Build tree using XML schema data types: Checked
It then gives me a Soap error message on the response:
Quote: |
<NS1:Envelope xmlns:NS1="http://schemas.xmlsoap.org/soap/envelope/">
<NS1:Body/>
<NS1:Fault>
<faultcode/>
<faultstring/>
<faultactor/>
<detail>
<message>System Error : A schema validation error has occurred while parsing the XML document</message>
</detail>
</NS1:Fault>
</NS1:Envelope>
|
But still - I would expect an error that will give me the actual tag that is in error. |
|
Back to top |
|
 |
kimbert |
Posted: Tue May 27, 2008 4:30 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
I would expect an error that will give me the actual tag that is in error. |
You are correct. Parser errors are never as terse as that. Check the system error log, or take a user trace ( mqsichangetrace, mqsireadlog, mqsiformatlog ). |
|
Back to top |
|
 |
pottas |
Posted: Wed May 28, 2008 12:37 am Post subject: |
|
|
 Disciple
Joined: 27 Oct 2005 Posts: 185 Location: South Africa
|
Thanks Kimbert,
I also figured that I need to get more than that.
The way I did it now was to use the Exception Handling example in the ESQL manual - that gave me the exception on the lowest level:
Quote: |
A schema validation error has occurred while parsing the XML document |
In this structure - in the 'Insert' tag, I get the specific details of the field that is in error:
Quote: |
cvc-enumeration-valid: The value "" is not valid with respect to the enumeration facet for type "CustomerRecordStatus_Type". It must be a value from the enumeration. |
...so this is the error I would have expected to see in my retuning Soap fault.
My question is then.... do I have to do something specific when creating the message set from the WSDL?
This is the process I follow:
New --> Message set --> <Choose a name for the message set and project> --> Choose 'Web Services SOAP' in the drop-down --> Check box 'XML documents (general)' --> Finish.
That's it... do I have to do something more on the Message Set to make it validate in my Soap message flows? |
|
Back to top |
|
 |
pottas |
Posted: Wed May 28, 2008 1:18 am Post subject: |
|
|
 Disciple
Joined: 27 Oct 2005 Posts: 185 Location: South Africa
|
Guys,
In addition to my previous post - allow me to add to the bottom the part I missed out
After I created the Message Set, I add the WSDL to the Message Set project and do the following:
New --> Message Definition file from --> WSDL file --> Select the WSDL bindings to import --> finish.
then I 'clean' and 'build' my project.
...so do I have to do something specific to the Message Set from here onwards? |
|
Back to top |
|
 |
|