EJB 3.1拦截器是“拦截器”吗?

时间:2011-10-22 10:23:10

标签: java-ee-6 ejb-3.1

这是我在这里的第一篇文章!

我是Java EE dev的新手,我想知道的是Interceptor是否可以阻止正常的执行流程。

我想要实现的是一种“观察者”bean:假设我有一个bean在db中执行更新,从web层调用。我希望在更新之后以异步方式调用另一个bean以执行其他操作,在我的情况下使用JavaMail发送电子邮件,而不阻止第一个bean的正常流,即将控制权交给谁调用第一个bean。

我的想法是拦截一些会话ejb方法:从那个拦截器我想调用其他一些ejbs,比如singleton ejb。 是正确的方法吗?我应该用别的东西吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

是的,这正是拦截器的用途。客户端在EJB上调用一些方法,并定义拦截器应拦截此调用。

在拦截器方法中,您可以决定如何处理请求 - 它可以继续到链中的下一个拦截器(或真正的端点 - 您的EJB - 如果这是最后一个拦截器),或者它可以阻止执行

在截取方法中,您可以访问必须明确调用 proceed()方法的InvocationContext以继续处理请求。不调用此方法明显阻止了调用。

HTH。