EJB 存根线程安全吗?

Are EJB stubs thread safe?

EJB 无状态 bean 是线程安全的,因为它们可以同时被许多客户端访问而无需担心,事实上每个客户端将由不同的实例提供服务。

在客户端,我们使用对特定无状态 EJB 的代理引用。 EJB proxy/remote 存根也可以线程安全地调用吗?

我的意思是,如果我的 Spring 控制器是带有 EJB 的 Autowired,它的方法可能会同时被许多线程调用。

都是线程安全的吗?

几年前我在 RMI 邮件列表(已停用)上问过一个关于 RMI/JRMP 存根的类似问题。 Sun 的回答是假设 JDK class 被认为是线程安全的,除非 Javadoc 声明相反。

所以假设仍然有效,答案是 'yes'。并且考虑客户端连接管理,答案也一定是'yes'.

来自 http://docs.oracle.com/javaee/6/tutorial/doc/gipjg.html"When a client invokes the methods of a stateless bean, the bean’s instance variables may contain a state specific to that client but only for the duration of the invocation"。这加上有一个无状态 bean 池的事实(为什么需要池化无状态对象——一个应该就足够了)表明无状态 bean 本质上不是线程安全的。 EJB 容器很可能确保 "same" bean 上的并发调用在不同的池化实例

上结束