2011-07-16 5 views
0

私が作成するすべてのルートビルダに対して同じ行を書き直さないために、私が持っている全体のルートビルダーでグローバルにするには、onExceptionを作成する必要があります。 例外ハンドラの現在のスコープは、特定のルートビルダーのためのラクダコンテキストです。私は同じビルドクラス(r1とr2)を同じonException()。processを使う必要があります。複数のRouteBuilderクラスを処理するグローバルなonException

現在の作業onExceptionを私が使用:

私は次のようにクラスレベルにあることをconfigre方法からonExceptionを()の行を移動した
def configure { 

    onException(classOf[CustomException]).process(exceptionProcessor). 
     process(doExtraProcess) 


    from(address). 
      process(doSmth). 
      process(doSmthElse) 
    } 

:私が得た

onException(classOf[CustomException]).process(exceptionProcessor). 
      process(doExtraProcess) 

    def configure { 

     from(address). 
       process(doSmth). 
       process(doSmthElse) 
     } 

このエラー:

原因:org.apache.camel.FailedToCreateRouteException:に失敗しました 作成 ルート[[直接:軌跡]から] - > [OnException [ルートクラス]] - > [ [... REFの が上で指定されなければならないので:java.lang.IllegalArgumentExceptionが:プロセス[ヌル]

に起因するプロセス[ヌル]

答えて

4

まず、onExceptionを:refは上 を指定する必要があります()はconfigure()メソッドによって呼び出される必要があります。次に、継承を使用して例外処理を再利用できます。親RouteBuilderクラスを作成し、一般的な例外処理をメソッドに追加するだけです。次に、それぞれのサブクラスがそれらのconfigure()メソッドで共通のメソッドを呼び出させるようにします。

+0

これは、私たちが共通の機能を共有し、これまでかなりうまく機能する方法です。 – helpermethod

関連する問題