使用文件系统而不是 EAR 文件将 Web 应用程序部署到 Tomcat 有什么缺点?

What are the drawbacks to deploying web applications to Tomcat using the filesystem rather than an EAR file?

因为 Tomcat 只是将 EAR WAR 解压缩到文件系统来为应用程序提供服务,使用 有什么好处EAR WAR 将文件系统推送到 Tomcat webapps 文件系统有什么缺点?

Tomcat 支持 WAR 但不支持 EAR。无论如何,我认为你的问题是关于为什么我们通常部署打包为单个 WAR 的应用程序而不是分解的 WAR(即分解部署)。

我的主要优势是:

  • 与在展开的 WAR 部署中部署许多文件相比,只需要部署一个文件更容易处理部署。

  • 因为只有一个文件被部署,我们总是可以确保应用程序在特定版本中是 运行。如果我们允许部署单个文件并且有人只是将几个文件更新到其他版本,则很难判断应用程序的确切版本是什么 运行.

之前已经有一些关于此类话题的讨论,您可以参考this and this了解更多信息。

如果部署单个 war 文件

,我看到了一些好处
  • 如果您有多个环境(例如测试和生产环境),您只需将一个文件从一台服务器移动到另一台服务器
  • 如果您想确保部署正确的文件,您可以从该单个文件计算哈希和
  • 你们都有一个原始版本:有时您必须在展开的 war 中编辑文件(尽量避免这种情况)。如果你已经这样做了并且你想回滚它,你只需删除 exploded-war- 文件夹并且 tomcat 使用 war 文件
  • 您可以使用 manager-app 通过浏览器部署应用程序,这样您就不需要访问服务器

你的问题对我来说有点模棱两可,不清楚,因为很难理解你试图澄清的内容;但是,让我们一一总结你的观点。


Since Tomcat just unzips the EAR to the filesystem to serve the app..

Tomcat 无法展开和部署 EAR 文件,因为它没有实现完整的 Jakarta(以前 - Java)EE 规范;然而,EAR 是一个“企业档案”,即企业 Java 应用程序档案,它不适合仅属于子规范。

相反,Tomcat 是一个 Web 服务器(通常称为 Servlet 容器、Servlet 引擎、Web 容器),它实现了:

  1. Servlet API;
  2. JSP;
  3. EL(表达语言);
  4. 网络套接字;
  5. 雅加达注释;
  6. 雅加达授权,

所有这些都是 Java/Jakarta EE 的子规范。

what is the benefit of using an EAR?

EAR 是一个成熟的企业(应用程序)存档,它带来的不仅仅是 Servlet、JSP 等

what are the drawbacks to just pushing a filesystem to the Tomcat webapps filesystem?

没什么,一般来说。 webapps 是一个默认文件夹,Tomcat 通常会尝试在其中查找 Web 应用程序,这些应用程序应该是 .war 个文件。

EAR(企业应用程序存档)is not supported by Tomcat(网络容器)。

正如你所写 Tomcat 我猜你问的是 WAR 和 extracted/exploded WAR.

  • 通常WAR文件在开始部署后提取
  • 您可以在展开的文件夹中进行更改,但是 war 不会再次部署,因为它已经被提取并且将应用更改
  • 即使没有WAR也可以部署(提取文件夹,将节省几秒钟)
  • 只需一个文件即可轻松部署 - WAR
  • 的优势
  • 如果已提取部署,则无法识别应用程序的版本,因为您可以在已提取的文件系统中进行更改 - 提取的缺点