私はcxf:cxfEndpointを使用してWSに呼び出しています。私はonExceptionなどを使って例外をキャッチしたい。なんらかの理由でそれが機能しない。私はdataFormatをPAYLOAD、handleFault属性、あるいはキャメルコンテキストをtrueに設定しました。 Webサービスが実行されていないので、私は例外が捕捉されることを期待していますが、機能していません。 XMLのアンマーシャリングにも同じ問題があります。Camel ErrorHandlerが呼び出されない
例外をスローすると、java.lang.Exceptionを使用して正常にキャッチされ、ダミーの例外キューに書き込まれますが、Webサービスがダウンするか、無効なXMLが渡され、マーシャルが失敗すると例外が発生します投げられるが捕らえられない。
他に気づくことはありますか?
EDIT:アンマーシャリングのコードが含まれています。 try/catchを使用してに切り替え、私は無効なXMLを渡すとき、例外はJUnitテスト中に巻き込まれないが、間違ったラクダコンテキストXMLファイルが実行時に使用されていたランタイム
<route>
<from uri="jmsamq:In"/>
<doTry>
<unmarshal>
<jaxb contextPath="outbound.message"/>
</unmarshal>
<doCatch>
<exception>java.lang.Exception</exception>
<handled>
<constant>true</constant>
</handled>
<transform>
<simple>Mapping Failed</simple>
</transform>
<to uri="jmsamq:errorqueue1"/>
</doCatch>
</doTry>
<log message="${body}"/>
<multicast stopOnException="true">
<to uri="direct:webservice"/>
<to uri="direct:myqueue"/>
</multicast>
</route>
ウェブサービスのためにdoTry/doCatch(http://camel.apache.org/try-catch-finally.html)を使用して、障害メッセージを作成し、応答コードを設定します。その次に - 無効なXMLを使用すると、CXFエンドポイントで解析が失敗し、ルートにも関与しません。 – gusto2
あなたが行っていることを見ることができるようにコードを投稿できますか? –
doTry/doCatchはWebサービスのために働いた - ありがとう!それはjaxbへの非整列化を助けません。doTryブロックにも同様にラップする必要がありますか?私はそれが動作すると確信していますが、それは必要ですか? onExceptionがWebサービスで動作しない理由を知っていますか?おそらく、例外ではなく、障害がスローされているという事実とは何か? – kinsey