关于EAR与WAR的EJB解释

12

我刚开始学习EJB。

尽管我正在进入它,我还是有一些问题,这些问题基于我所听到的关于它们的信息。

  1. 使用EJB的应用程序是否总是必须部署为EAR文件?
  2. 包含EJB的应用程序是否可以像其他Java Web项目一样使用ECLIPSE部署而不使用ANT?
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进行部署,这也是通常的部署方式。

下面显示了该文件的示例,取自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,是否可以像其他Java Web项目一样使用ECLIPSE部署而不使用ANT?

是的,一旦组装了EAR/JAR文件,它可以通过服务器进行部署(如果您愿意,可以通过Eclipse进行)。

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

这里有一个教程可以帮助您完成

更多阅读材料

打包应用程序

打包EJB3应用程序


1
好的解释。虽然有一个小纠正:EAR文件不一定需要在其中包含任何WAR文件。 EAR文件的唯一条件是包含至少一个J2EE模块,无论哪种类型。 - Isaac
@Isaac:谢谢,我会在答案中澄清这一点。 - JoseK
能否将库嵌入到 EJB jar 中?什么是 necrobumping? - carpinchosaurio
@carpinchosaurio:您可以在WAR的WEB-INF/lib中拥有库,然后将其捆绑到EJB EAR或作为EAR中的独立JAR文件-请参见上面的'appclient.jar'示例。 - JoseK
@JoseK,谢谢,但在我的情况下,我没有WAR,也没有EAR,只有一个EJB。 - carpinchosaurio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接