2013-11-26 87 views
2

我正在閱讀一些關於java ee中的Interceptors的教程,但是還有一些主題沒有被廣泛涵蓋。因此,我將不勝感激具有任何人回答下列問題:Interceptor的執行順序是什麼?

1),其順序被攔截的情況下execueted目標類含有@AroundInvoke方法爲:

@Interceptors({PrimaryInterceptor.class, SecondaryInterceptor.class}) 
@Stateful 
public class OrderBean { 
... 
    @AroundInvoke 
    private void last(InvocationContext ctx) { ... } 
... 
} 

我的印象中,第一它遵守taget類攔截器,即在上述情況下的last方法,然後按照註釋內部指定的順序執行兩個類級別的攔截器。我對嗎?

2)什麼是Timeout Interceptors(含註釋@AroundTimeout的方法)什麼時候執行?

回答

3

引用documentation

通過調用一個方法時默認攔截器的順序是

  • 外部攔截器

  • 默認攔截器,如果存在的話

  • 類攔截器,如果存在的話

  • 方法攔截器,如果有的話

  • 上bean類
  • 攔截器法(使用@AroundInvoke

在每個組(默認情況下,類,方法)的攔截器的順序從左至右如@Interceptors註釋中定義,然後攔截器。

而對於第二個問題 - @AroundTimeout與EJB計時器一起使用,攔截器被觸發時與@Schedule超時註釋的方法 - 看到這個example.

+0

這個文件說,「......然後XML攔截。」這意味着訂單是XML的註釋。 爲什麼我無法在攔截器規範中找到它(我認爲這只是Jboss的文檔,可能與其他文檔不同)? – Tarik

相關問題