我想访问无接口(interface) Singleton MySingleton
的多个实例 singletonA
和 singletonB
。这些实例首先在另一个 Singleton Configurator 类中定义:
MySingleton.java
@Singleton
@LocalBean
public class MySingleton {
...
}
Configurator.java
@Singleton
@Startup
@LocalBean
public class Configurator {
@EJB MySingleton singletonA;
@EJB MySingleton singletonB;
}
上面的代码似乎有效。
现在,我需要将这 2 个 MySingleton 实例注入(inject)消息驱动 Bean 中:
MDB.class
@Stateless
public class MDB implements MessageListener {
@EJB (lookup="?") MySingleton singletonA;
@EJB (mappedName="??") MySingleton singletonB;
}
但此时我完全迷失了。我知道我可以通过将 2 个实例定义为唯一接口(interface)的 2 个(空)实现来使事情变得更简单。但我遇到了一些问题,因为该类包含一些非静态字段,所以我无法将其定义为接口(interface)。
编辑
由于 MDB 的性质,我无法通过引用传递单例。 最后,我想避免创建两个相同的 MySingleton 实现。
感谢收到的答案,我一直在重新思考整个架构,并且我必须同意这样一个事实:将 MySingleton 定义为 Stateful 也很好。
最佳答案
我猜你意识到这是一个矛盾。 @Singleton
只有一个实例,因此不能有两个。也许您需要另一种 bean(例如 @Stateful
ejb)
关于java - EJB 3.1 无接口(interface) Singleton/Stateful session bean 的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9591811/