【问题标题】:WAR vs EAR for web application with no EJB?没有 EJB 的 Web 应用程序的 WAR 与 EAR?
【发布时间】:2011-04-17 20:04:12
【问题描述】:

我有一个不使用 EJB 的 Java EE Web 应用程序。我有时会针对 Jetty/Tomcat 进行部署,因此需要 WAR 打包。但是,有时我也会针对 JBoss 和 Websphere。

我的理解是成熟的 Java EE 应用服务器可以采用 EAR 或 WAR 格式。我什么时候会使用其中一个,为什么?我知道它们都是标准压缩文件格式,我已经阅读了 10 种不同的 sn-ps 试图解释它们 (including this one),但并没有更深入地了解每种格式的优缺点。

【问题讨论】:

    标签: java web-applications deployment servlets


    【解决方案1】:

    如果您只有 Web 模块 - 使用 WAR 文件。 如果您有不同的 Java EE 模块 - 请使用 EAR。尽管您只能在 EAR 中交付 Web 模块 - 这样做没有意义(您将需要进行更复杂的部署配置)

    【讨论】:

    • 其他“J2EE 模块”的例子有哪些?
    • 例如EJB、WebServices
    • 我的应用程序具有 Web 服务 (SOAP),但我不确定为什么这会从 EAR 中受益...您能详细说明一下吗?
    • 首先,您确定您的 Web 服务配置为可以在 Tomcat 上运行吗?如果您有几个模块,则需要将它们作为单独的 WAR 文件部署到 Tomcat(因为 Tomcat 不支持 EAR)这是 WebSphere 和 EAR 等应用服务器的好处......您可以将所有 Web 模块和 Web 服务放在一个部署文件 (EAR)。它们将安装在一起。
    • 我在同一个 WAR 中使用了 2 个 servlet。有什么理由让它们在 EAR 中成为 2 个 WAR 更好?
    【解决方案2】:

    关键点是您是否需要 EAR 文件(可能包含上述 WAR 文件)中提供的任何内容。如果是这样,那么部署为 EAR 是有意义的。

    它还可以连接您需要在 Tomcat 等中手动执行的一些配置。一个典型的例子是绑定到 Web 应用程序的 URL,您需要使用 WAR 的容器特定配置文件覆盖默认启发式,但你可以直接放在EAR配置文件中。

    此外,在开发过程中,WAR 经常可以直接以爆炸形式进行热部署,其中 EAR 必须被解包和部署。对于来自 Eclipse 的 Glassfish,差异非常明显。

    【讨论】:

    • 我在 Tomcat 文档中找不到如何在那里部署 EAR。这是使用嵌入式 JBoss 吗?
    • 您不能在 Tomcat 中部署 EAR。但是您可以将一个裸 WAR 和完全相同的 WAR 很好地包装在一个 EAR 中,用于不同的服务器。
    • 是的,您不能将 EAR 部署到 Tomcat,因为 Tomcat 是一个 servlet 容器而不是应用程序服务器。因此,如果您需要将 Web 应用程序同时部署到 Tomcat 和 JBoss 和 WebSphere,请使用 WAR 文件。它适用于所有人
    【解决方案3】:

    在 J2EE 应用程序中,模块根据其功能被打包为 EAR、JARWAR

    如果您只使用 Servlet、JSP、GIF 和 HTML 文件。然后使用 .WAR

     WAR:(Web ARchive) Web modules which contain Servlet class files, JSP
     Files, supporting files, GIF and HTML files are packaged as JAR file
     with .war (web archive) extension.
    

    如果您使用不同的不同 JAVA EE 模块,例如(EJB + Servlet、JSP、GIF 和 HTML 文件 + 其他技术)。然后使用 .EAR

    EAR: (Enterprise ARchive) All above files (.jar and .war) are packaged
    as JAR file with .ear (enterprise archive) extension and deployed into
    Application Server.
    

    【讨论】:

      猜你喜欢
      • 2011-10-21
      • 1970-01-01
      • 2011-05-25
      • 1970-01-01
      • 2017-08-27
      • 1970-01-01
      • 2011-02-18
      • 2010-12-08
      • 1970-01-01
      相关资源
      最近更新 更多