从Singleton同时访问Stateless Sessionbean

时间:2017-08-29 09:20:54

标签: java concurrency singleton entitymanager stateless-session-bean

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

从具有ConcurrencyManagement.BEAN的单一操作访问SLSB是否安全?可以发生并发调用?

如果它是安全的,在SLSB中使用实体管理器实例也是安全的,因为entitymanager不是线程安全的,并且如果SLSB实例在不同线程之间共享,则实体管理器也在线程之间共享。

提前致谢!

1 个答案:

答案 0 :(得分:1)

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

来自EJB 3.1规范:

  

容器必须确保只有一个线程可以执行无状态或有状态会话bean   实例在任何时候。

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

如果来自您的单身的2个并发呼叫,这些呼叫将由2个不同的SLSB实例提供。