全局onException以处理多个RouteBuilder类

时间:2011-07-16 19:35:36

标签: scala spring-mvc apache-camel

我需要创建onException,在整个路由构建器上是全局的,以便不为我创建的每个路由构建器重写相同的行。 我的异常处理程序的当前范围是特定路由构建器的驼峰上下文。我需要创建路由构建器类r1和r2,以使用相同的onException()。process。

我使用的当前工作onException:

def configure {

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


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

当我将configEx方法中的onException()行移动到类级别时,如下所示:

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

    def configure {

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

我收到了这个错误:

  

引起:org.apache.camel.FailedToCreateRouteException:失败   在以下位置创建路线route52:>>> OnException [[class CustomException] - >   [process [null],process [null]]]<<<在途中:   路线[[来自[direct:locus]] - > [OnException [[...因为ref必须是   指定于:process [null]

     

引起:java.lang.IllegalArgumentException:必须指定ref   on:process [null]

1 个答案:

答案 0 :(得分:4)

首先,需要通过configure()方法调用onException()。接下来,您可以使用继承来重用异常处理。只需创建一个父RouteBuilder类,并在方法中放置常见的异常处理。然后让每个子类在其configure()方法中调用该公共方法...