2011-10-22 219 views
1

這是我第一篇文章!EJB 3.1攔截器是「攔截器」嗎?

我是Java EE開發新手,我想知道的是如果Interceptor可以阻止正常的執行流程。

我想要實現的是一種「觀察者」bean:假設我有一個bean執行db中的更新,從web層調用。我希望在更新後以另一種異步方式調用另一個bean來執行其他操作,在我的情況下,使用JavaMail發送一封電子郵件,而不會阻塞第一個bean的正常流動,即將控制權返回給調用第一個bean的控制者。

我的想法是攔截一些會話ejb方法:從該攔截器我想調用一些其他ejbs,如單身ejb。 是否正確?我應該使用別的東西?

謝謝!

回答

0

是的,這正是攔截器的用途。客戶端在您的EJB上調用一些方法,並且定義攔截器應攔截此調用。

在攔截器方法中,您可以決定如何處理請求 - 可以繼續處理鏈中的下一個攔截器(或真正的端點 - 您的EJB - 如果這是最後一個攔截器),也可以阻止執行。

在攔截方法中,您可以訪問InvocationContext,您必須在其中明確調用繼續()方法以繼續處理請求。不調用這個方法顯然阻塞了調用。

HTH。

+0

@robbetto - 你是否設法讓它工作? –