2012-08-10 83 views
3

有人能告訴我如何在受保護或私有方法上處理類註解(如攔截器)?EJB上的JavaEE類標註處理

如果我有一個這樣的EJB:

@Stateless 
@Interceptors({ SomeInterceptor.class }) 
public class ContactBean implements ContactLocal { 


@Override 
public void doSomethingWithPublicMethod(final Long id) { 
    return doSomething(id) 
} 

ContactEntity doSomething(final Long id){ 
    doSomethingPrivate(id); 
} 

private doSomethingPrivate(final Long id){ 
    ... 
} 

是呼籲所有方法的攔截,只是被標記爲@覆蓋的那些(不明白爲什麼它應該做的),或者是有任何其他規則?我真正快速地掃描了Java EE教程,但找不到任何描述它的東西。它可以取決於容器嗎?

所以我假設我應該在Interface上擁有所有的Interceptor,Transactions等,如果我想讓它們只在實現接口的方法上工作,

回答

3

受管Bean(如EJB bean)的註釋僅在通過代理進行調用時處理。換句話說,從外面的豆。

在Java中,不容易修飾隱含的this變量。當您從doSomethingWithPublicMethod方法調用默認和私有方法時,將不會發生這些方法的截取。

同樣,如果這些方法被單獨註釋爲@RunAs@Asynchronous,那麼這些方法也不會被處理。

Adam Bien在他的博客更詳細地解釋了這一點:http://www.adam-bien.com/roller/abien/entry/how_to_self_invoke_ejb