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

问题描述:

在JSF应用程序中使用DI和拦截器时,我遇到了一个问题。当拦截器存在时EJB注入失败

我有一个支持bean,它观察JSF事件并执行一些初始数据查找。

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

的bean是相当向前基本上是这样的:在JSF页面豆如下注册为事件侦听器

@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)
  • 钻嘴鱼科2.0.2(FCS B10)

提前感谢!

问候, 亚历

+0

和你有没有尝试注入另一个组件(非ejb)?它工作吗? – Bozho 2010-12-07 21:51:21

如果你想取得进步,你可以尝试使用299基拦截器与拦截器结合,而不是与EJB风格的束缚英寸如果该地区存在漏洞,稍后再运行拦截器可能会提供一些解决办法。