java - .war 与 .ear 文件

标签 java jakarta-ee deployment

.war 和 .ear 文件有什么区别?

最佳答案

WAR(Web 存档) 是一个加载到 Web container 中的模块。 Java Application Server 。 Java 应用服务器有两个容器(运行时环境)- 一个是 Web 容器,另一个是 EJB 容器。

Web 容器 托管基于 JSP 或 Servlets API 的 Web 应用程序 - 专为处理 Web 请求而设计 - 因此更像是一种请求/响应式的分布式计算。 Web 容器需要将 Web 模块打包为 WAR 文件 - 这是一个特殊的 JAR 文件,在 WEB-INF< 中有一个 web.xml 文件 文件夹。

EJB 容器 托管基于 EJB API 的企业 java bean,旨在提供扩展的业务功能,例如声明式事务、声明式方法级安全性和多协议(protocol)支持 - 所以更多的是 RPC 样式分布式计算。 EJB 容器需要将 EJB 模块打包为 JAR 文件 - 这些在 META-INF 文件夹中有一个 ejb-jar.xml 文件。

企业应用程序可能由一个或多个模块组成,这些模块可以是 Web 模块(打包为 WAR 文件)、EJB 模块(打包为 JAR 文件),也可以是两者。企业应用程序打包为 EAR 文件——这些是特殊的 JAR 文件,在 META-INF 文件夹中包含一个 application.xml 文件。

基本上,EAR 文件 是包含WAR 文件JAR 文件 的超集。 Java 应用程序服务器允许在 WAR 文件中部署独立的 Web 模块,尽管在内部,它们创建 EAR 文件作为 WAR 文件的包装器。独立的 Web 容器,例如 TomcatJetty不支持 EAR 文件——这些不是成熟的应用程序服务器。这些容器中的 Web 应用程序将仅部署为 WAR 文件。

在应用服务器中,EAR 文件包含应用安全角色映射、EJB 引用映射和 Web 模块的上下文根 URL 映射等配置。

除了 Web 模块和 EJB 模块,EAR 文件还可以包含打包为 RAR 文件的连接器模块和打包为 JAR 文件的客户端模块。

关于java - .war 与 .ear 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1594667/

相关文章:

node.js - 在生产环境中部署 ReactJS 应用程序(使用 NodeJS 后端)

java - Android onClickListener 实现最佳实践

java - Spring的@Required注解推荐用法

java - 单击java JList中的项目时,如何打开新窗口或新框架?

c# - 从 .NET 迁移到 Java

java - 管理 EJB 项目中的 hibernate 实体

java - 如何将列表发送到请求它的 jsp?

deployment - 删除了自定义 Amazon Beanstalk AMI ID

java - 在 Debug模式下部署 .war 失败并出现错误

java - 方法调用可能产生 NullPointerException Retrofit Body