2010-10-28 90 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在构造函数中将始终为空

相关问题