2.4 .war和.ear文件的区别 | Java Debug 笔记

203 阅读2分钟

本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看<活动链接>

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

一个WAR(Web归档)是一个被加载到Java应用服务器的一个Web容器的模块。Java应用服务器具有两个容器(也可以理解为运行时环境)-一个是Web容器,另一个是EJB容器。

相对于EJB容器,Web容器承载基于JSP或专为Web请求处理而设计的Servlets API的Web应用程序。因此具有更多的分布式计算的请求/响应样式。 Web容器要求将Web模块打包为WAR文件-这是一个特殊的JAR文件,他在WEB-INF文件夹中带有web.xml文件。

EJB容器承载一个基于EJB的API的 Enterprise java beans,EJB API旨在提供扩展的业务功能,例如声明式事务,声明方法级别的安全性和多协议支持-因此在代码上体现了更多的RPC风格的分布式计算。EJB容器要求将EJB模块打包为JAR文件-他们在META-INF文件夹中有一个ejb-jar.xml文件。

企业应用程序可以包含一个或多个模块,这些模块可以是Web模块(打包成WAR文件),EJB模块(打包成JAR文件)或它们两者都有包含在里面。企业应用程序打包为EAR文件-这些是特殊的JAR文件,在META-INF文件夹中包含application.xml文件。

基本上,EAR文件是包含WAR文件和JAR文件的超集。 Java Application Server允许在WAR文件中部署独立的Web模块,尽管在内部,EAR文件只是作为WAR文件的包装。 诸如Tomcat和Jetty之类的独立Web容器不支持EAR文件。 这些容器中的Web应用程序仅使用WAR文件进行部署。