13

Click here to load reader

Mule soap

Embed Size (px)

Citation preview

Page 1: Mule soap

Soap Service in Mule

Page 2: 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.

.

Page 3: Mule soap

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

Page 4: Mule soap

Let’s see how…

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

Page 5: Mule soap

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

Page 6: Mule soap

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

Page 7: Mule soap

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

Page 8: Mule soap

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

Page 9: Mule soap

This is how the flow works:-

Page 10: Mule soap

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

Page 11: Mule soap

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

Page 12: Mule soap

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

Page 13: Mule soap

Thank You