我想访问无接口Singleton MySingleton
的多个实例singletonA
和singletonB
。这些实例中的另一单例类Configurator
首先定义:EJB 3.1的多个实例无接口Singleton /有状态会话Bean
MySingleton.java
@Singleton
@LocalBean
public class MySingleton {
...
}
Configurator.java
@Singleton
@Startup
@LocalBean
public class Configurator {
@EJB MySingleton singletonA;
@EJB MySingleton singletonB;
}
上面的代码,appearently工作。
现在,我需要在一个消息驱动Bean注入MySingleton的这2个实例:
MDB.class
@Stateless
public class MDB implements MessageListener {
@EJB (lookup="?") MySingleton singletonA;
@EJB (mappedName="??") MySingleton singletonB;
}
但在这一点上,我完全失去了。我知道我可以通过将2个实例定义为一个独特接口的2个(空)实现来使事情更简单。但我有一些问题,因为该类包含一些非静态字段,所以我无法将其定义为接口。
由于MDB的性质EDIT
,我无法通过引用传递的单身。 最后,我想避免创建两个相同的MySingleton实现。
感谢收到的答案,我一直在重新思考整个架构,我必须同意MySingleton定义为有状态的事实也会很好。
基于编辑:单身人士通常与Stateful大不相同,但他们更符合Stateless bean。当你重新设计你的应用程序时,你可以考虑这个事实。无状态和Singleton都在请求的基础上工作(一般情况下)并且不保持状态。 – Bala 2012-03-07 20:44:44