.war和.ear文件有什么区别?
一个WAR(Web归档)是被加载到一个模块Web容器 A的Java应用服务器.Java Application Server有两个容器(运行时环境) - 一个是Web容器,另一个是EJB容器.
的Web容器基于JSP或Servlet的API主机的Web应用程序-用于网络请求处理专门设计-因此更多的分布式计算的请求/响应样式.Web容器需要将Web模块打包为WAR文件 - 这是一个特殊的JAR文件,web.xml
文件WEB-INF
夹中包含文件.
一个EJB容器,以便更多的研究-基于EJB API旨在提供扩展的业务功能,如声明式事务,声明方法级别的安全性和多协议支持主机企业Java Beans 分布式计算的RPC风格.EJB容器需要将EJB模块打包为JAR文件 - 这些ejb-jar.xml
文件在META-INF
文件夹中有一个文件.
企业应用程序可能包含一个或多个模块,这些模块可以是Web模块(打包为WAR文件),EJB模块(打包为JAR文件),也可以是两者.企业应用程序打包为EAR文件 - 这些是包含application.xml
文件META-INF
夹中文件的特殊JAR文件.
基本上,EAR文件是包含WAR文件和JAR文件的超集.Java应用程序服务器允许在WAR文件中部署独立的Web模块,但在内部,它们创建EAR文件作为WAR文件的包装.Tomcat和Jetty等独立Web容器不支持EAR文件 - 这些文件不是完整的应用程序服务器.这些容器中的Web应用程序仅作为WAR文件部署.
在应用程序服务器中,EAR文件包含诸如应用程序安全角色映射,EJB参考映射和Web模块的上下文根URL映射之类的配置.
除了Web模块和EJB模块之外,EAR文件还可以包含打包为RAR文件的连接器模块和打包为JAR文件的客户端模块.
来自GeekInterview:
在J2EE应用程序中,模块根据其功能打包为EAR,JAR和WAR
JAR:包含企业java bean(类文件)和EJB部署描述符的EJB模块打包为带有.jar扩展的JAR文件
WAR:包含Servlet类文件,JSP文件,支持文件,GIF和HTML文件的Web模块打包为带有.war(web archive)扩展名的JAR文件
EAR:以上所有文件(.jar和.war)打包为带有.ear(企业归档)扩展名的JAR文件,并部署到Application Server中.
战争 - 网络档案.它用于根据servlet标准部署Web应用程序.它是一个jar文件,包含一个名为WEB-INF的特殊目录,其中包含几个文件和目录(web.xml,lib,类)以及Web应用程序的所有HTML,JSP,图像,CSS,JavaScript和其他资源.
耳 - 企业档案.它用于部署包含EJB,Web应用程序和第三方库的企业应用程序.它也是一个jar文件,它有一个名为APP-INF的特殊目录,其中包含application.xml文件,它包含jar和war文件.
WAR(Web存档)文件包含servlet类文件,JSP(Java servlet页面),HTML和图形文件以及其他支持文件.
EAR(企业归档)文件包含WAR文件以及包含代码的JAR文件.
这些文件中可能还有其他内容,但它们基本上意味着它们的含义:对于Web类型的东西的WAR,对于企业类型的东西的EAR(WAR,代码,连接器等).
JAR文件
JAR(Java Archive的缩写)文件允许将多个文件组合成一个文件.带有'.jar'的文件; 软件开发人员利用扩展来分发Java类和各种元数据.这些还包含库和资源文件,以及附件文件(例如属性文件).
用户可以使用Java Development Kit(JDK)'.jar'命令提取和创建JAR文件.也可以使用ZIP工具.
JAR文件具有可选的清单文件.清单文件中的条目规定了JAR文件的使用.文件类的"主"类规范将文件表示为分离或"独立"程序.
WAR文件
WAR(或Web应用程序归档)文件可以包括XML(可扩展标记语言)文件,Java类以及用于Internet应用程序的Java Server页面.它还用于标记构成Web应用程序的库和Web页面.带有".war"扩展名的文件包含用于服务器或JSP(Java Server Page)容器的Web应用程序.它具有JSP,HTML(超文本标记语言),JavaScript和用于创建上述Web应用程序的各种文件.
WAR文件的结构如此,以允许特殊目录和文件.它也可能具有数字签名(非常类似于JAR文件)以显示代码的准确性.
EAR文件
EAR(Enterprise Archive)文件将JAR和WAR文件合并到一个存档中.这些带有".ear"扩展名的文件有一个元数据目录.这些模块被打包到存档中,以便在app服务器中顺利和同时操作不同的模块.
EAR文件还具有部署描述符(XML文件),它们有效地规定了不同模块的部署.
请参阅:http://www.wellho.net/mouth/754_tar-jar-war-ear-sar-files.html
tar(磁带存档) - 使用的格式是以fileName,fileSize,fileData的串行单位编写的文件 - 无压缩.可以是巨大的
Jar(java archive) - 使用的压缩技术 - 通常包含类/ class/java文件之类的java信息.但是可以包含任何文件和目录结构
war(Web应用程序存档) - 类似于jar文件,根据JSP/Servlet规范只有特定的目录结构用于部署目的
ear(企业档案) - 类似于jar文件.具有遵循J2EE要求的目录结构,以便可以在J2EE应用程序服务器上部署它. - 可以包含多个JAR和WAR文件
Ear文件提供了更多选项来配置与应用程序服务器的交互.
例如:如果应用程序服务器的hibernate版本比依赖项提供的版本旧,则可以将以下内容添加到ear-deployer-jboss-beans.xml中,以便JBOSS隔离类加载器并避免冲突:
true
或者到src/main/application/META-INF/jboss-app.xml:
loader=nameofyourear.ear
java2ParentDelegation=false
这将确保应用程序和应用程序服务器之间不存在类加载器冲突.
通常,类加载器机制的工作方式如下:
当类加载请求被呈现给类加载器时,它首先要求其父类加载器来完成请求.反过来,父级会向其父级询问该类,直到请求到达层次结构的顶部.如果层次结构顶部的类加载器无法满足请求,则调用它的子类加载器负责加载类.
通过隔离类加载器,您的耳朵类加载器将不会查看父类(= JBoss /其他AS类加载器).据我所知,战争档案是不可能的.
J2EE定义了三种类型的归档:
Java Archives(JAR) JAR文件封装了一个或多个Java类,清单和描述符.JAR文件是存档的最低级别.JAR文件在J2EE中用于打包EJB和客户端Java应用程序.
Web归档(WAR) WAR文件与JAR文件类似,不同之处在于它们专门用于由Servlet,JSP和支持类构成的Web应用程序.
Enterprise Archives(EAR) "EAR文件包含构成特定J2EE应用程序的所有组件.