2. .
We often come across SOAP web services in our
project and often face different challenges in handling
SOAP web services. One such challenge is SOAP request
validation.
3. IN SIMPLE WORDS IF WE HAVE
THE XSD FILE OF WEB SERVICE
WE CAN VALIDATE THE REQUEST
OF THE WEB SERVICE AGAINST
THAT XSD USING A SCHEMA
VALIDATION FILTER IN MULE..
Yes, I am talking about using message filter to validate a
SOAP request against a given XSD file
4. Let’s see how…
Let consider we have a SOAP webs ervice exposed in Mule by
following way :-
5. Now, if we want to validate the request with an XSD file of the
web service and want to throw a custom message in case if the
SOAP request is invalid or incorrect, we need to use schema
validation filter
6. So after adding schema validation filter in our flow, our
flow looks like the following
7. We can also add a subflow which will throw custom message if
the SOAP request is invalid as follow :-
8. So, if we test the webservice with a wrong SOAP request in
SoapUI we will get a custom message :-
10. <mulexml:schema-validation-filter name="Schema_Validation"
schemaLocations="MainData.xsd" returnResult="true" doc:name="Schema
Validation" />
The code:-
You need to use schema validation filter which will refer to
your XSD files for validating a SOAP request as follows:-
The Schema Validation Filter uses the JAXP libraries to validate a
message against a schema. You must provide the path, file name, and
extension of the schema or schemas in the Schema Locations property.
11. <flow name="ServiceFlow" doc:name="ServiceFlow">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost"
port="8082" path="mainData" doc:name="HTTP"/>
<message-filter onUnaccepted="ValidationFailFlow" doc:name="filter to validate
xml against xsd" throwOnUnaccepted="true" >
<filter ref="Schema_Validation"/>
</message-filter>
<cxf:jaxws-service validationEnabled="true"
serviceClass="com.test.services.schema.maindata.v1.MainData"
doc:name="SOAP"/>
<component class="com.test.services.schema.maindata.v1.Impl.MainDataImpl"
doc:name="JavaMain_ServiceImpl"/>
</flow>
A code snipped of the Mule config:-
12. To get the full code access for implementing a SOAP Request
validator in Mule, please visit :-
http://anirbansenchowdhary.com/blog/?p=131
You can also visit Mule documentation on Schema Validation
:-
http://www.mulesoft.org/documentation/display/current/Sch
ema+Validation+Filter