Я новичок в Mule, ... У меня есть веб-сервис со следующим запросом: -
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://services.test.com/schema/MainData/V1">
<soapenv:Header/>
<soapenv:Body>
<v1:insertDataRequest>
<v1:Id>6</v1:Id>
<v1:Name>abc</v1:Name>
<v1:Age>4</v1:Age>
<v1:Designation>SE</v1:Designation>
</v1:insertDataRequest>
</soapenv:Body>
</soapenv:Envelope>
Мой поток мулов выглядит примерно так:
<flow name="MuleDbInsertFlow1" doc:name="MuleDbInsertFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8082" path="mainData" doc:name="HTTP"/>
<cxf:jaxws-service serviceClass="com.test.services.v1.GetCalculation" doc:name="SOAP"/>
<component class="com.test.services.v1.GetCalculationImpl" doc:name="Java"/>
<catch-exception-strategy doc:name="Catch Exception Strategy">
<set-payload value="Error occoured!!!!" doc:name="Set Payload"/>
</catch-exception-strategy>
</flow>
Теперь мой вопрос здесь, в запросе SOAP, атрибуты ID и AGE являются целыми числами, и если я введу какое-либо строковое значение, например <v1:Id>aaaa</v1:Id>
, он выдаст Fault, например org.apache.cxf.interceptor.Fault: Unmarshalling Error: Not a number strong>, что вполне естественно ... теперь, как я могу справиться с этим Unmarshalling error
и отправить собственное сообщение в качестве ответа ... Я попытался использовать блок исключений catch в Mule, но не могу справиться с этой ошибкой демаршаллинга CXF strong >