使用EAR vs. WAR的好处?

Sha*_*man 5 java ear war java-ee wildfly

我们正在Wildfly 8上部署我们的JavaEE 7应用程序.以前,我们已将所有企业应用程序(WAR,多个EJB JAR文件)打包为EAR.但是,JavaEE现在允许您将EJB打包在WAR文件中(或作为WAR的WEB-INF/lib中的JAR),我们想知道部署EAR是否有任何好处,而不是使用WAR打包.

EAR是否提供了WAR不具备的功能?它肯定会降低使用WAR的封装复杂性.部署方面有什么不同吗?EJB命名?什么?

Jea*_*ard 5

  • 更容易部署(只有一个包而不是多个)。
  • 某些服务器(例如 Weblogic,但不是 wildfly)允许整个 EAR 的共享会话。
  • 一般来说,EAR 提供了更多的选项来配置 AS。
  • 允许您定义配置文件的特殊文件夹 (APP-INF) application.xml

如果您的应用程序仅由多个 WAR 组成,那么您可能不会觉得维护多个部署有什么大不了的。但是,请考虑使用 WAR、EJB、JMS 等的应用程序。在 EAR 中管理所有这些组件之间的交互会容易得多。

您可能需要阅读Java EE 教程的打包应用程序部分。

  • 我不明白为什么这是正确的答案。我认为将所有内容打包到一个 WAR 中并进行部署肯定比构建多个模块并将它们打包到一个 EAR 中要容易得多。为什么要使用多个 WAR?至少这个问题只提到了一场战争。此外,链接指的是 j2ee 6,问题指的是 j2ee 7。 (2认同)