2012-09-26 123 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中使其成爲全局「全局」的方式。 –