2016-06-18 7 views
2

Ich habe einen Mule-Fluss, wo ich einen SOAP-Service mit Mule CXF eingehenden Endpunkt ausgesetzt. Ich konfigurierte validationEnabled="true" und auch wsdlLocation="path-to\my\wsdl". Mit dieser Konfiguration des eingehenden CXF-Endpunkts kann die eingehende SOAP-Anforderung überprüft und ein SOAP-Fehler ausgelöst werden, wenn Schemavalidierungsfehler vorliegen. So weit, ist es gut.Mule CXF SOAP-Dienst - Validierung gegen XSD und senden benutzerdefinierte Antwort anstelle von Soap-Fehler

Jetzt möchte ich die SOAP-Fault-Antwort im Falle von Schema-Validierung Fehler anpassen.

Ich will nicht SOAP-Fehler überhaupt senden, anstatt würde Ich mag im Antworttext etwas wie unten schicken Sie mir

<errorCode>123</errorCode> 
<errorDescription>some error description</errorDescription> 

Kann jemand bitte sagen, wie ich das erreichen kann?

Antwort

2

Wenn Sie einen SOAP Webservice Belichtungs- und eine Validierung der eingehenden SOAP-Nachricht mit dem Schema haben wollen und benutzerdefinierte Nachricht setzen, dann eine der beste Weg ist, mulexml:schema-validation-filter

zum Beispiel den folgenden Code zu verwenden: -

<mulexml:schema-validation-filter name="Schema_Validation" schemaLocations="yourSchema.xsd" returnResult="true" doc:name="Schema Validation" /> 

<flow name="ServiceFlow" > 
    <http:listener config-ref="HTTP_Listener_Configuration" path="mainData" doc:name="HTTP Connector"/> 
     <message-filter onUnaccepted="ValidationFailFlow" doc:name="filter to validate xml against xsd" throwOnUnaccepted="true" > 
     <filter ref="Schema_Validation"/> 
    </message-filter> 
    <cxf:jaxws-service serviceClass="com.test.services.schema.maindata.v1.MainData" validationEnabled="true" doc:name="SOAP"/> 
    <component class="com.test.services.schema.maindata.v1.Impl.MainDataImpl" doc:name="JavaMain_ServiceImpl"/> 
    </flow> 

und die eine Unterströmung erstellen Sie Ihre benutzerdefinierte Nachricht erstellen

<errorCode>123</errorCode> 
<errorDescription>some error description</errorDescription> 

: -

<sub-flow name="ValidationFailFlow" > 
     <logger message="SOAP Request is not valid!!" level="INFO" doc:name="Logger"/> 
     <set-payload value="&lt;errorCode&gt;123&lt;/errorCode&gt;&lt;errorDescription&gt;Soap Validation fail!!!/errorDescription&gt;" doc:name="Set Payload" mimeType="application/xml"/> 
</sub-flow> 

So, jetzt, wenn die Validierung fehlschlägt, dann wird es den Weg in den Unterfluss und zeigen Sie Ihre eigene Nachricht Notiz, können Sie Ihre eigene Nachricht mit Satz Nutzlast oder Java-Klasse oder XSLT oder alles, was Sie :) wünschen erstellen
für mehr Referenz auf mulexml:schema-validation-filter verweisen: - https://docs.mulesoft.com/mule-user-guide/v/3.7/schema-validation-filter

Verwandte Themen