java - EJB 3.1 无接口(interface) Singleton/Stateful session bean 的多个实例

标签 java interface singleton ejb ejb-3.1

我想访问无接口(interface) Singleton MySingleton 的多个实例 singletonAsingletonB。这些实例首先在另一个 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/

相关文章:

C# 从接口(interface)转换类型

android - 将数据从 DialogFragment 返回到适配器

c++ - 这是一个有效的单例类吗

java - h2o 基本解析文件

java - 如何将自定义 validator 与 dropwizard 一起使用?

c# - 实现后密封接口(interface)

ios - 我应该将单例存储为 ivar 吗?

c++ - 单例模式的类成员初始化失败

Java IllegalArgumentException 索引处查询中存在非法字符

java - 使用 Apache Olingo 将 OData 对象反序列化为 Java 对象