2010-10-28 92 views
0

我試過把另一個Singleton bean的遠程接口放入另一個。但是,遠程對象將始終爲空。有沒有其他辦法可以解決它?如何從Singleton bean調用另一個Singleton bean?

@Singleton 
public class SingletonBean1 implements SingletonBean1Remote { 

    @EJB 
    SingletonBean2Remote singletonBean2Remote; 

    ... 

    public SingletonBean1() { 
     ... 

     singletonBean2Remote.anyMethod(); // returns NullPointerException 

     ... 
    } 

} 

回答

0

它是一個單身的事實並不重要。您必須初始化該引用以指向除空之外的其他內容。正如所寫,這正是應該發生的事情。

創建單例#1的方法應該獲得對單例#2的引用。

+0

在我的其他EJB會話bean實現中,@EJB註釋不需要指向某些東西就可以處理引用。你是否建議我做一個singletonBean1Remote = new SingletonBean1Remote()? – Chris 2010-10-28 16:57:53

+0

你是對的,依賴注入應該把它整理出來。摩擦是Singleton--需要有一個工廠類或方法來告訴DI引擎如何創建單例。也許這是缺失。我是一名Spring用戶,所以我無法像EJB3那樣提供建議。 – duffymo 2010-10-28 17:09:25

+0

是的,無論如何,謝謝! (: – Chris 2010-10-28 17:18:11

0

我知道這是一個老問題,但依賴注入發生在構造函數完成後。所以在上面的例子中,bean在構造函數中將始終爲空

相關問題