Как обрабатывать ошибки демаршаллинга CXF в Mule Exception-Strategy

Я новичок в 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 , что вполне естественно ... теперь, как я могу справиться с этим Unmarshalling error и отправить собственное сообщение в качестве ответа ... Я попытался использовать блок исключений catch в Mule, но не могу справиться с этой ошибкой демаршаллинга CXF


person Anirban Sen Chowdhary    schedule 10.04.2014    source источник


Ответы (1)


Один из подходов - использовать перехватчики с сервисом CXF Jaxws.

Эта следующая ссылка дает дополнительные сведения о модуле CXF в Mule и ссылку на перехватчики.

<cxf:jaxws-service .... ....>
  <cxf:inInterceptors>
    <spring:bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
  </cxf:inInterceptors>
  <cxf:outInterceptors>
    <spring:bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
  </cxf:outInterceptors>
</cxf:jaxws-service>

Используйте перехватчики отказов, чтобы взять под контроль обработку ошибок.

Справочник по модулю Mule CXF

person user1760178    schedule 10.04.2014
comment
Привет .. Спасибо за ваш ответ .. не могли бы вы подробно определить, как обрабатывать это исключение. Чтобы я мог отправить собственное сообщение при ответе .. Я реализовал ‹spring: bean class = org.apache.cxf.interceptor.LoggingInInterceptor /› но не смог обработать исключение. пожалуйста, определите следующий шаг, который нужно сделать, чтобы обработать исключение, так как я очень новичок в Mule - person Anirban Sen Chowdhary; 12.04.2014
comment
Я предоставил LoggindInInterceptors как образец, показывающий конфигурацию перехватчиков в cxf mule. Перехватчики регистрации должны быть заменены на перехватчики отказов, чтобы перехватить ошибку. - person user1760178; 15.04.2014