2017-03-23 13 views
0

ラクダの文脈でcxfプロバイダによってスローされた例外をどのように捕捉できますか?私は、キャメルコンテキスト内でExceptionMapperによってスローされたマッピング例外をキャッチしようとしています。 これは私のキャッチブロックです。ラクダの文脈でcxfによってスローされた例外をキャッチ

<doCatch> 
<exception>java.lang.Exception</exception> 
    <handled> 
     <constant>false</constant> 
    </handled> 
</doCatch> 
が、CXFプロバイダ(com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider)が例外を投げているとExceptionMapperが応答を設定されているため、例外がcatchブロックで捕まるされていません。私の必要条件は、ラクダの文脈ですべての例外を捕らえ、それらをデータベースに記録することです。ラクダでcxfが放棄した排除を捕まえる方法はありますか?

答えて

0

onExceptionブロックを使用すると、CamelContext内にスローされたすべての例外をキャッチできます。

<camelContext ....> 
<onException> 
    <exception>java.lang.Exception</exception> 

    <handled> 
     <constant>true</constant> 
    </handled> 

    <bean ref="logAction" method="updateErrorStatus" /> 

    <log message="Exception in camel route!!!" /> 
    </onException> 

    <route ..> 
    .. 
    </route> 
</camelContext> 

ExceptionMapperが例外をカバーし、それをスローしていないので、あなたは問題がある詳細

0

ためcamel documentationを参照してください。

あなたはExceptionMapperインターフェイスの実装ですか? あなたが使用して同じことを行うクラスを拡張して、独自のExceptionMapperを作成していない場合はそう、RuntimeException

としてtoResponse方法再スロー例外にしよう。

UPD:私はあなたがこのように、例外変数を使用することができます他のオプション

+0

はいExceptionMapperの実装では、実行時例外としてスローする代わりに応答が設定されます。 – tvshajeer

+0

だから...それを再投げて捕まえる。 – Vadim

0

がないと思います。

<doCatch id="_doCatch1"> 
       <exception>java.lang.Exception</exception> 
       <transform id="_transform2"> 

        <simple> 
         ${exception.message} 
        </simple> 
       </transform> 
       <log id="log_exit_exception" message="Error - Exception: ${exception.message}" /> 
      </doCatch> 
+0

私は疑問に思うが、例外はキャッチされた例外を処理する方法ではなく、キャッチする方法である。 – Vadim

関連する問題