【问题标题】:EJB RMI implementation issueEJB RMI 实现问题
【发布时间】:2015-07-08 18:21:45
【问题描述】:

RMI 规范指出:

“由 RMI 运行时分派给远程对象的方法 实现(服务器)可能会或可能不会在单独的线程中执行。 来自不同客户端的调用虚拟机将执行 在不同的线程中。从同一台客户端计算机不是 保证每个方法将在单独的线程中运行”

现在,使用 RMI 作为核心实现的 EJB 如何处理这个问题?

例如,如果我有一个包含许多线程的网络应用程序(每个客户端 HTTP 请求一个),
他们每个人都使用相同的无状态 EJB 来发出请求,我们显然希望每个请求都有一个服务器 RMI 线程,当然也不希望在同一个线程中序列化和服务的请求。

【问题讨论】:

    标签: java multithreading rmi


    【解决方案1】:

    你不会明白的。这个措辞非常不透明,但它的神秘含义是你不能假设它在服务器上是单线程的。 RMI 没有这样的实现。来自客户端的并发调用将在服务器上同时进行。

    【讨论】:

    • 谢谢,我是否正确地假设如果真的是这样,它会给 EJB 实现带来严重的问题?
    • 这样的实现完全没用。
    【解决方案2】:

    首先,在 Web 应用程序的许多实现中,企业 bean 大多是本地的,或者是过度设计的,应该是本地的。在本地访问的情况下,呼叫被分流,并且不会通过 RMI。并不是说你就是这种情况,但这是需要考虑的事情。但是请注意,您的 servlet 容器和 bean 容器是同一个容器,我认为使用远程客户端没有多大用处。

    servlet 容器管理的线程和企业 bean 容器管理的线程是不同的。每个人都将自行决定他们的池有多大,以及重用政策是什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-19
      • 2012-04-29
      • 1970-01-01
      • 2011-10-02
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多