【问题标题】:Difference between running EJB from WAR vs. separate EJB container从 WAR 运行 EJB 与单独的 EJB 容器之间的区别
【发布时间】:2014-04-04 10:22:15
【问题描述】:

从 WAR 与 EJB 容器定义/运行 EJB 时,EJB 的功能有什么不同吗?决定一种方法与另一种方法的优缺点是什么。

从 WAR 访问它时我们会失去哪些能力?

在我们的例子中,开发人员希望使用 EJB 来创建/访问 REST Web 服务。

我们的一位建筑师在下面提到。出于这个原因,他希望有一个单独的 EJB,可以将其添加(jar)到 EAR 中,也可以添加到 WAR 中,以将其用作 REST 端点。我不想在多个地方都有它

I’d prefer our approach to put transaction/service based code in EJBs to 
leverage Container Managed Transactions, JPA, MDB and all the good stuff EJBs 
have to offer.

从我阅读的关于使用 EJB 作为 REST 服务实现的文档中,它说

Add the EJB class to the WEB-INF/classes directory of your WAR file or to a 
JAR that is located in your WEB-INF/lib directory. When a client makes a request 
to a JAX-RS annotated enterprise bean, the JAX-RS runtime environment looks up 
and uses an EJB instance of the class to invoke the resource method.

所以,我想知道,如果我们将 EJB 放在 WAR 中 - 就像在 WAR 的源中创建源一样,以便在构建 WAR 时将类添加到 WEB-INF/classes 中,而不是让根据用途将同一个 ejb jar 放在两个不同的地方 - 作为 REST Web 服务端点与其他功能,它会满足所有要求还是我必须将 jar 放在两个地方?

如果答案不同,我正在使用带有 EJB 3.1 的 Websphere 8.5。

【问题讨论】:

    标签: websphere java-ee-6 ejb-3.1


    【解决方案1】:

    EJB 3.1 规范的第 15.4 节强调了两个主要区别:

    1. WAR 中的所有 EJB 与 WAR 和 WAR 中的所有其他 EJB 共享组件名称空间 (java:comp)。通常,每个 EJB 都有自己的组件名称空间。这使得共享引用名称和绑定变得更加容易(尽管这可以在 EE 6 中通过 java:modulejava:app 显式完成),但它增加了在大型 WAR 中发生冲突的可能性。
    2. EJB 类由 WAR 类加载器加载。实际上,这并不重要,只是在遇到类加载问题时需要注意。

    如果要将 EJB 用作 REST 服务,则必须将 EJB 打包到 WAR 中。如果您担心在 WAR 和 EJB 模块中“重复”EJB 逻辑,您可以在 EJB 模块中声明一个基类,然后在 WAR 和 EJB 模块中声明子类,这些子类扩展了基类并带有注释 @ 987654324@或@Singleton

    【讨论】:

    • 我的问题更多的是——如果我在 WAR 之外有 EJB,它是否仍会提供 EJB 设施,如事务、JPA 功能等。我认为它会但只是想拥有一个确认。
    • 绝对。所有相同的服务都可用于 EJB-in-WAR。
    【解决方案2】:

    关于 EJB 功能,将 EJB 打包到 WAR 或 EJB 模块中没有区别。

    在某些情况下,您必须将 EJB 打包到 WAR 中,例如如果您有一个同时是 EJB 的 REST 端点。

    大多数情况下,WAR 封装了前端功能。在这些情况下,仅从设计角度来看,将 EJB 放入 WAR 中是不可取的。

    【讨论】:

      猜你喜欢
      • 2011-10-21
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      • 2013-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多