.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 容器,例如 Tomcat和 Jetty不支持 EAR 文件——这些不是成熟的应用程序服务器。这些容器中的 Web 应用程序将仅部署为 WAR 文件。
在应用服务器中,EAR 文件包含应用安全角色映射、EJB 引用映射和 Web 模块的上下文根 URL 映射等配置。
除了 Web 模块和 EJB 模块,EAR 文件还可以包含打包为 RAR 文件的连接器模块和打包为 JAR 文件的客户端模块。
关于java - .war 与 .ear 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1594667/