Web サービスからデータを取得するためにキャメルと cxf コンポーネントを使用しています。場合によっては、Web サービスが標準の soap:fault を返します。次のステップがあります。
<camel:route id="someId">
<camel:onException useOriginalMessage="false">
<camel:exception>java.lang.Exception</camel:exception>
<camel:handled>
<camel:constant>false</camel:constant>
</camel:handled>
<camel:process ref="defaultNaoIntegrationErrorHandler" />
<camel:to uri="ref:naointegration.checkAvailability.jms.error.queue" />
</camel:onException>
<camel:from uri="direct:naoCheckAvailabilityOut" />
<camel:marshal ref="soapjaxbSAP" />
<camel:to id="naoCheckAvailabilityEndpoint" uri="cxf:bean:naoCheckAvailabilityEndpoint" />
<camel:unmarshal ref="soapjaxbSAP" />
</camel:route>
ここで、naoCheckAvailabilityEndpoint は次のとおりです。
<cxf:cxfEndpoint id="naoCheckAvailabilityEndpoint"
address="${naointegration.I011.CheckAvailability.soap.address}"
endpointName="s:checkAvailabilityEndpoint" serviceName="s:SOAPService"
xmlns:s="http://www.example.com/test">
<cxf:properties>
<entry key="dataFormat" value="MESSAGE" />
<entry key="setDefaultBus" value="true" />
</cxf:properties>
<cxf:outInterceptors>
<ref bean="logOutbound" />
</cxf:outInterceptors>
<cxf:inFaultInterceptors>
<ref bean="logOutbound" />
</cxf:inFaultInterceptors>
</cxf:cxfEndpoint>
通常の SOAP メッセージが表示される場合は、すべて問題ありません。そして、soap foalt/http 500 を取得しているときは、soap 障害のある SOAP メッセージ (xml) を含む文字列メッセージしかありません。
同様の問題でcxfとcamelのメールリストを読んでいると、cxfエンドポイントがorg.apache.cxf.binding.soap.SoapFaultタイプの例外であるsoap foaltがある場合に例外をスローする必要があることを理解しましたが、取得できません。目標は、onException 句で SOAP エラー例外の処理を行うことです。
助言がありますか?