从 Singleton 并发访问 Stateless Session Bean

Concurrent access Stateless Sessionbean from Singleton

如果我的理解是正确的,容器不会并发调用 SLSB。序列化调用或创建新的 SLSB 实例。我的问题是:

从可能发生并发调用的 ConcurrencyManagement.BEAN 单点访问 SLSB 是否安全?

如果安全的话,在SLSB内部使用entitymanager实例是否也安全,因为entitymanager不是线程安全的,如果SLSB实例在不同线程之间共享,那么entitymanager也在线程之间共享。

提前致谢!

两个问题都是肯定的,这是安全的。 一个会话 bean,无论是无状态的还是有状态的,一次只能由一个线程使用。

来自 EJB 3.1 规范:

The container must ensure that only one thread can be executing a stateless or stateful session bean instance at any time.

http://download.oracle.com/otndocs/jcp/ejb-3.1-pfd-oth-JSpec/

如果 2 个并发调用来自您的单例,则这些调用将由 2 个不同的 SLSB 实例提供服务。