12

我刚刚开始阅读 EJB。

即使我冒险进入它,我也有一些基于我所听到的关于它们的问题。

  1. 使用 EJB 的应用程序是否总是必须部署为 EAR?
  2. 是否可以像使用 ECLIPSE 而不使用 ANT 的其他 java web 项目一样部署包含 EJB 的应用程序?
4

1 回答 1

28

1.使用ejb的应用程序是否总是必须部署为EAR?

不。

EJB 模块被组装到一个 JAR 中,我们称之为 myapp-ejb.jar 作为命名约定。

这包含 EJB 代码以及 EJB 2.x 中称为 ejb-jar.xml 的部署描述符文件。在 EJB 3.0 中,代码本身包含服务器理解部署所需的注释,因此部署描述符是可选的。部署描述符/注释涵盖了 EJB 部署所需的基本内容,例如 JNDI、DataSource 查找等。

多个 EJB 模块和其他 Web 模块(war)的集合一起构成了EAR。正如@Isaac 指出的那样,EAR 不必在其中包含任何 WAR 文件。EAR 文件的唯一条件是至少包含一个任何类型的 J2EE 模块。

EAR 需要一个META-INF/application.xml列出 EAR 中所有 EJB jar 和 war 的列表。因此,当您有多个 EJB 模块(通常是这种情况)时,您会选择 EAR,因此通常部署的是 EAR。

该文件的示例如下所示,取自http://download.oracle.com/docs/cd/B32110_01/web.1013/b28221/undejdev003.htm。这是一篇很好的文章供你阅读。

<application>
  <display-name>master-application</display-name>
  <module>
    <ejb>ejb1.jar</ejb>
  </module>
  <module>
    <ejb>ejb2.jar</ejb>
  </module>
  <module>
    <java>appclient.jar</java>
  </module>
  <module>
    <web>
        <web-uri>clientweb.war</web-uri>
        <context-root>webapp</context-root>
    </web>
  </module>
  <module>
    <ejb>ejb3.jar</ejb>
  </module>

2.包含EJB的应用程序是否可以像其他使用ECLIPSE而不使用ANT的其他java web项目一样部署

是的,一旦组装了 EAR/JAR,就可以将其部署到服务器中(如果您愿意,可以通过 Eclipse)。

Ant 是一个构建工具,它与 EJB 代码的实际部署无关。它用于编译和组装 JAR - 这也可以从 Eclipse 中完成。

Here is a tutorial which does just that.

Further Reading

Packaging Applications

Packaging EJB3 Applications

于 2010-10-13T12:53:26.630 回答