.war vs .ear 文件
.war 和 .ear 文件之间有什么区别?
WAR(Web Archive)是一个模块,它被加载到Java应用程序服务器的Web容器中。Java 应用程序服务器有两个容器(运行时环境) - 一个是 Web 容器,另一个是 EJB 容器。
Web 容器托管基于 JSP 或 Servlets API 的 Web 应用程序 - 专为 Web 请求处理而设计 - 因此更像是分布式计算的请求/响应样式。Web 容器要求将 Web 模块打包为 WAR 文件 - 这是一个特殊的 JAR 文件,文件夹中有一个文件。web.xml
WEB-INF
EJB 容器托管基于 EJB API 的企业 Java Bean,旨在提供扩展的业务功能,如声明性事务、声明性方法级安全性和多协议支持 - 因此更像是 RPC 风格的分布式计算。EJB 容器要求将 EJB 模块打包为 JAR 文件 - 这些模块在文件夹中有一个文件。ejb-jar.xml
META-INF
企业应用程序可以由一个或多个模块组成,这些模块可以是 Web 模块(打包为 WAR 文件)、EJB 模块(打包为 JAR 文件)或两者兼而有之。企业应用程序被打包为EAR文件 - 这些是特殊的JAR文件,其中包含文件夹中的文件。application.xml
META-INF
基本上,EAR 文件是包含 WAR 文件和 JAR 文件的超集。Java 应用程序服务器允许在 WAR 文件中部署独立的 Web 模块,尽管在内部,它们创建 EAR 文件作为 WAR 文件的包装器。像Tomcat和Jetty这样的独立Web容器不支持EAR文件 - 这些不是成熟的应用程序服务器。这些容器中的 Web 应用程序只能部署为 WAR 文件。
在应用程序服务器中,EAR 文件包含诸如 Web 模块的应用程序安全角色映射、EJB 引用映射和上下文根 URL 映射之类的配置。
除了 Web 模块和 EJB 模块,EAR 文件还可以包含打包为 RAR 文件的连接器模块和打包为 JAR 文件的客户端模块。
在 J2EE 应用程序中,模块根据其功能打包为 EAR、JAR 和 WAR
JAR:包含企业 java bean(类文件)和 EJB 部署描述符的 EJB 模块打包为具有.jar扩展名的 JAR 文件
WAR:包含 Servlet 类文件、JSP 文件、支持文件、GIF 和 HTML 文件的 Web 模块被打包为扩展名为 .war(Web 归档)的 JAR 文件
EAR:上述所有文件(.jar和.war)都被打包为扩展名为.ear(企业归档)的JAR文件,并部署到应用程序服务器中。