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 上的并发调用在不同的池化实例
上结束
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 上的并发调用在不同的池化实例
上结束