In WSO2ESB/Synapse, whenever mediation errors occur, user can execute faultsequence to find error details.
The fault sequence can be defined at a sequence level or at proxy service level. Mediation level issues and endpoint errors can be captured at faultsequence. But SOAPFault can not be captured at fault sequence, since ESB/Synapse will treat it as the response from the endpoint.
But from user's pont of view , those are service endpoint failures which need to be handled properly.
To handle the soapfaults, now we can use a property which forces to execute fault sequence whenever soapfault occurs.
We need to set following property before sending the message to endpoint.;
<property name="FORCE_ERROR_ON_SOAP_FAULT" value="true"/>
Sample conf;
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="testProxy"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target faultSequence="myfaultSeq">
<inSequence>
<property name="FORCE_ERROR_ON_SOAP_FAULT" value="true"/>
</inSequence>
<outSequence>
<send/>
</outSequence>
<endpoint>
<address uri="http://localhost:9764/services/echo/"/>
</endpoint>
</target>
<description/>
</proxy>
The fault sequence can be defined at a sequence level or at proxy service level. Mediation level issues and endpoint errors can be captured at faultsequence. But SOAPFault can not be captured at fault sequence, since ESB/Synapse will treat it as the response from the endpoint.
But from user's pont of view , those are service endpoint failures which need to be handled properly.
To handle the soapfaults, now we can use a property which forces to execute fault sequence whenever soapfault occurs.
We need to set following property before sending the message to endpoint.;
<property name="FORCE_ERROR_ON_SOAP_FAULT" value="true"/>
Sample conf;
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="testProxy"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target faultSequence="myfaultSeq">
<inSequence>
<property name="FORCE_ERROR_ON_SOAP_FAULT" value="true"/>
</inSequence>
<outSequence>
<send/>
</outSequence>
<endpoint>
<address uri="http://localhost:9764/services/echo/"/>
</endpoint>
</target>
<description/>
</proxy>
In the above sample , whenever we get soapfault, the 'myfaultSeq' will be executed.
Related Post: Sending mails for errors
No comments:
Post a Comment