2010-10-13 49 views
11

我刚开始阅读EJB。有关EAR和WAR的EJB解释

即使我冒险进入它,我有几个问题基于我听说过他们。

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

回答

25

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容器和战争。所以当你有多个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的部署,就像其他其他Java 网络项目使用Eclipse和不 使用ANT

是,一旦EAR/JAR组装它可以部署到服务器(如果你愿意,可以通过Eclipse)。

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

这里is a tutorial which does just that

进一步阅读

Packaging Applications

Packaging EJB3 Applications

+1

很好的解释。尽管有小的改正:EAR并没有在其中包含任何WAR文件。EAR文件的唯一条件是至少包含一个任何类型的J2EE模块。 – Isaac 2010-10-20 16:32:18

+0

@Isaac:谢谢,请澄清,在答案 – JoseK 2010-10-21 10:52:22

+0

necrobumping,我可以将库包含到ejb jar吗? – carpinchosaurio 2018-03-08 12:11:17