当前位置: 首页 > 面试题库 >

有关EAR与WAR的EJB解释

蒋啸
2023-03-14
问题内容

我刚刚开始阅读EJB。

即使我冒险尝试,基于我对它们的了解,我也会有一些疑问。

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

问题答案:

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,是否可以像使用其他ECLIPSE而不使用ANT的其他Java Web项目一样部署包含EJB的应用程序

是的,一旦EAR / JAR组装完成,就可以将其部署到服务器中(如果需要,可以通过Eclipse)。

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

这是一个做到这一点的教程。

进一步阅读

包装应用

打包EJB3应用程序



 类似资料:
  • 问题内容: 将应用程序部署为EAR(具有1个EJB和1个WAR模块)与单独的模块有什么区别?我想使用GlassFish 3 Web配置文件,但它不支持EAR存档。我可以简单地将EJB和WAR用作单独的模块吗?还有其他选择吗? 问题答案: 3种部署变体之间似乎有些混淆: 包含EJB和WEB模块的EAR 部署单独的EJB模块和单独的WEB模块 部署包含EJB类或EJB jar的WEB模块。 在第一种情

  • 我正在使用Glassfish 4。我有一个耳朵,它有一个战争和一个罐子(与EJB)。 我想从WAR中调用EJB,但不确定是否需要使用本地或远程接口。 在我的罐子里,我的豆子是这样的: 在我的WAR中,我有一个web服务,它看起来如下所示: 这两个都包装成一个耳朵。 当我调用WebService方法时,我得到一个AccessLocalException: 首先: 这是调用EJB的正确方法吗。EAR中

  • 我有一个ear,它包含2个war文件,每个war都包含无状态ejb和rest类。接口位于commons中。jar文件。耳朵结构如下所示: 我试图使用无状态-ejb-2中的无状态-ejb-1和注释,但我在部署期间遇到了错误。当我在stateless-EJB-2中使用@EJB时,就部署了ear,但在调用jersey-rest-2时,我遇到了一个远程查找错误。 这是我的方法调用链: 泽西-rest-1

  • 问题内容: .war和.ear文件有什么区别? 问题答案: 在J2EE应用程序中,模块根据其功能打包为EAR,JAR和WAR。 JAR:包含企业Java Bean(类文件)和EJB部署描述符的EJB模块打包为具有.jar扩展名的JAR文件。 WAR:包含Servlet类文件,JSP文件,支持文件,GIF和HTML文件的Web模块打包为具有.war(Web存档)扩展名的JAR文件。 EAR:以上所有

  • 此接口的实现是在WAR中定义的。这个实现部署了Fine。 在glassfish V3.1日志中,我看到: 信息:EJB FormConfigurationProviderBean的可移植JNDI名称:[java:global/com.dialog.eDialog_eServices_EAR_1.0.1-snapshot/checkout-form-1.0-snapshot/FormConfigur

  • 问题内容: 我是EAR的新手。我已经开发了一个功能相互依赖的Web模块和ejb模块。为此,我试图将它们配置在EAR中。我将web和ejb模块都映射到EAR,可以看到application.xml为 但是当我尝试执行EAR时,我的服务器抛出以下异常 从上面我可以理解,EAR无法定位EJB模块中存在的类,因此引发异常。我正在使用WildFLy 10服务器和Eclipse IDE。 问题答案: EAR文