mule soap

Post on 13-Jan-2017

134 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

MULE-SOAP

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.

.

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..

Let’s see how…

Let consider we have a SOAP webs ervice exposed in Mule by following way :-

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

So after adding schema validation filter in our flow, our flow looks like the following

We can also add a subflow which will throw custom message if the SOAP request is invalid as follow :-

So, if we test the webservice with a wrong SOAP request in SoapUI we will get a custom message :-

This is how the flow works:-

<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.

<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:-

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/Schema+Validation+Filter

Thank You

top related