当拦截器存在时,EJB注入失败

时间:2010-12-07 21:43:35

标签: java jsf proxy interceptor cdi

在JSF应用程序中使用DI和拦截器时,我遇到了问题。

我有一个支持JSF事件并执行一些初始数据查找的支持bean。在JSF页面中,bean被注册为事件监听器,如下所示:

<f:event type="preRenderView" listener="#{myBean.loadData}"/>

豆子非常前卫,看起来基本上是这样的:

@Named
@RequestScoped
public class MyBean {

    @EJB
    private SomeDao dao;

    public void loadData() { ... }

    public void performSomeStuff() { ... }

}

dao被正确注入,一切都很好,直到这里。现在我想执行一些在拦截器内完成的延迟加载(特定代码无关紧要,因为当拦截器只在调用上下文上进行时会出现相同的行为)。所以,在调用performSomeStuff()之前,我想确保加载所有数据:

    @Interceptors(MyInterceptor.class)
    public void performSomeStuff() { ... }

此时EJB不再被注入(NPE显示......) - 有关于此的任何想法吗?

设定:

  • GlassFish 3.0.1
  • WELD-000900 1.0.1(SP3)
  • Mojarra 2.0.2(FCS b10)

提前致谢!

此致 亚历

1 个答案:

答案 0 :(得分:0)

如果您想取得进展,可以尝试使用基于299的拦截器与拦截器绑定绑定而不是EJB样式。如果该区域存在错误,让拦截器运行一段时间可能会有所缓解。