【问题标题】:Are EJB stubs thread safe?EJB存根线程安全吗?
【发布时间】:2015-06-26 15:51:49
【问题描述】:

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

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

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

都是线程安全的吗?

【问题讨论】:

    标签: java spring thread-safety ejb


    【解决方案1】:

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

    所以假设它仍然有效,看起来,答案是“是的”。考虑到客户端连接管理,答案也必须是“是”。

    【讨论】:

    • 我很高兴有和你一样的疑问,因为没有人愿意回答我开始认为我的问题根本没有意义:)
    • 这很有意义,但正确回答是另一回事。这可能是理所当然的事情,但如果受到质疑,很难提供参考或引用。我想了很久才想起来。
    • “考虑客户端连接管理”,还有一件事,你能告诉我你指的是什么吗?
    【解决方案2】:

    来自http://docs.oracle.com/javaee/6/tutorial/doc/gipjg.html“当客户端调用无状态 bean 的方法时,bean 的实例变量可能包含特定于该客户端的状态,但仅限于调用期间”。这加上有一个无状态 bean 池的事实(为什么需要池无状态对象 - 一个应该就足够了)表明无状态 bean 本质上不是线程安全的。 EJB 容器很可能会确保对“相同”bean 的并发调用最终会出现在不同的池化实例上

    【讨论】:

    • 问题是关于存根,而不是服务器端。
    猜你喜欢
    • 2014-12-02
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多