2010-12-07 40 views
1

在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

回答

0

如果你想取得進步,你可以嘗試使用299基攔截器與攔截器結合,而不是與EJB風格的束縛英寸如果該地區存在漏洞,稍後再運行攔截器可能會提供一些解決辦法。