代码之家  ›  专栏  ›  技术社区  ›  Hank Jesus M C

EJB3.1远程调用-它是自动分发的吗?它贵吗?

  •  3
  • Hank Jesus M C  · 技术社区  · 15 年前

    业务逻辑和jpa2facade保存在无状态会话bean(EJB3.1)中。到目前为止,SLSBs实现 只有 @Remote -接口。当一个bean需要访问另一个bean时,它通过RMI来访问。

    这是正确的假设吗?

    我可以处理它的缺点(对象丢失entityManager会话、传递值),至少我这么认为。但我想知道,如果持续的远程调用没有增加更多的负载那么必要。

    1 回复  |  直到 15 年前
        1
  •  3
  •   Community CDub    8 年前

    EJB规范没有指定如何实现集群,因此这将取决于所使用的特定实现。实际上,EJB规范是 故意地 编写的目的不是对部署进行假设:它们不要求对集群提供任何支持,而是以一种使之成为可能的方式编写的(EJB模型中的许多限制源于潜在的集群问题,例如对文件系统的访问)。然后,实现者可以自由地支持或不支持集群,并且仍然遵守规范。

    在Glassfish中,对远程EJB的引用本身负责分发。看到了吗 my answer 这里有更多信息。每个请求都可能被分派到不同的节点。这可能是大多数实现的工作方式。所以我想说你的假设是正确的。

    不过,我确实希望它们能够优化一个EJB调用另一个EJB的情况,并尽可能在同一节点上调度入侵。这将取决于部署是否同构(所有节点是否具有相同的bean)。同样,关于这些问题,规范有点含糊不清。但我猜大多数部署在实践中都是同质的:相同的ear部署在所有节点上。

    my answer 在这里。通过远程接口在同一个.ear中进行的EJB间调用比本地调用慢3倍。听起来很大,但我们说的是毫秒,所以 相对的 开销取决于方法的实际作用。我不知道其他应用程序的性能。服务器。

    希望有帮助。