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. YES, I AM TALKING ABOUT USING MESSAGE
FILTER TO VALIDATE A SOAP REQUEST
AGAINST A GIVEN XSD FILE
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..
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 :-
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.MAIND
ATA" DOC:NAME="SOAP"/>
<COMPONENT
CLASS="COM.TEST.SERVICES.SCHEMA.MAINDATA.V1.IMPL.MAINDAT
AIMPL" 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