2011-10-22 217 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 - 你是否设法让它工作? –