を処理する際に、この質問は、前のものに関連している:Apache Camel multicast, exception and Aggregation strategyのApache CXFキャメル空の応答例外
私は、以前の質問をしたときに、私は問題をmissunderstoodと思います。
私は私のルートに投げられた例外を処理しようとします。
onException(java.lang.Exception.class).handled(true).inOut("direct:thrownError");
from("direct:thrownError")
.to("log:com.sdmo.output?level="+LOG_LEVEL);
私のルートはCXFエンドポイントによって開始されますが、例外処理ルートが実現するとき、体が空である私のWSクライアントに返さ:
.filter(not(successResponsePredicate))
.to("log:com.sdmo.Error?level="+LOG_LEVEL)
.transform(simple("Erreur lors de l'appel copyItem"))
.process(new ConvertCartResponseProcessor())
.throwException(new Exception("copyItemError"))
.end()
例外は、このコードによって処理されます。
私はデバッグモードとログでいくつかのチェックを行い、例外処理コードが応答を設定していることを確認しました。単純な型でボディ(POJOタイプ)を置き換えると、返信を送信するときにアンマーシャルエラーが発生しました。私はInOutのパターンか何かのような私の使用に問題があることを推測
INFO: Exchange[ExchangePattern:InOut, BodyType:com.access_commerce.cameleonws.cart.AddXMLResponse, Body:[email protected]]
...
.inOut(...)の代わりにonException句でsetBody(定数( "ERROR"))またはtransform(定数( "ERROR"))を呼び出してみてください。それは少なくとも働きますか? –
CXFエンドポイントはPOJOモードです。この変換があった場合、マーシャリングエラーが発生します。注意:{http://www.access-commerce.com/cameleonWS/cart/}CartService#{http://}のインターセプターwww.access-commerce.com/cameleonWS/cart/}addXMLが例外をスローしました。今すぐ解凍します org.apache.cxf.interceptor.Fault:マーシャリングエラー:class java.io.ByteArrayInputStreamもスーパークラスもこれにはわかりませんコンテキスト。 – Franch