2012-09-26 87 views
2

我正在使用Grails和路由插件来使用RouteBuilder DSL来定义路由。RouteBuilder.onException是否创建全局异常处理程序或路由特定的异常处理程序?

如果我有像下面这样的场景:

... 
//configure method for route builder A 
def configure { 
    onException(CustomException).process(exceptionProcessor) 

    from(<route A.1>)... 
    from(<route A.2>)... 
} 
... 

... 
//configure method for route builder B 
def configure { 
    onException(CustomException).process(exceptionProcessor) 

    from(<route B.1>)... 
} 
... 

在这种情况下,不onException(CustomException).process(exceptionProcessor)定义涵盖路线A.1,A.2和B.1呢,还是一个全球性的异常处理程序定义只包含在同一RouteBuilder内配置的路由的路由特定异常处理程序(即A.1和A.2)?

回答

2

这将创建一个异常处理本地的具体路线设计器定义它。但它将跨越该特定路由生成器中的所有路由。也就是说,在Java中。不过,我认为你的groovy代码几乎以相同的方式编译为java是没有区别的。

+2

是的,这是正确的。如果你想跨越多个RouteBuilder类,你需要创建一个基类来扩展,并调用super.configure()。例如使用OO继承。在Camel 3.x中,我们可能会考虑在Java DSL中使其成为全局“全局”的方式。 –