.war和.ear文件有什么区别?
答案 0 :(得分:550)
WAR(网络存档)是一个加载到 Web container 的 Java Application Server 的模块。 Java Application Server有两个容器(运行时环境) - 一个是Web容器,另一个是EJB容器。
Web容器托管基于JSP或Servlets API的Web应用程序 - 专为Web请求处理而设计 - 因此更多的是分布式计算的请求/响应样式。 Web容器需要将Web模块打包为 WAR文件 - 这是一个特殊的JAR文件,web.xml
文件夹中包含WEB-INF
文件。
EJB容器托管基于EJB API的Enterprise Java bean,旨在提供扩展的业务功能,如声明式事务,声明性方法级安全性和多协议支持 - 所以更多的 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文件的客户端模块。
答案 1 :(得分:468)
在J2EE应用程序中,模块根据其功能
打包为EAR,JAR和WARJAR: 包含企业java bean(类文件)和EJB部署描述符的EJB模块打包为带有.jar扩展的JAR文件
WAR: 包含Servlet类文件,JSP文件,支持文件,GIF和HTML文件的Web模块打包为带有.war(web archive)扩展名的JAR文件
EAR: 以上所有文件(.jar和.war)都打包为带有.ear(企业归档)扩展名的JAR文件,并部署到Application Server中。
答案 2 :(得分:38)
答案 3 :(得分:25)
WAR(Web存档)文件包含servlet类文件,JSP(Java servlet页面),HTML和图形文件以及其他支持文件。
EAR(企业归档)文件包含WAR文件以及包含代码的JAR文件。
这些文件中可能还有其他内容,但它们基本上意味着它们的含义:Web类型的东西,企业类型的东西的EAR(WAR,代码,连接器等)。
答案 4 :(得分:11)
参考:http://www.wellho.net/mouth/754_tar-jar-war-ear-sar-files.html
tar(磁带档案) - 使用的格式是以fileName,fileSize,fileData的串行单位编写的文件 - 没有压缩。可以是巨大的
Jar(java档案) - 使用的压缩技术 - 通常包含类/ java文件之类的java信息。但是可以包含任何文件和目录结构
战争(网络应用档案) - 类似于jar文件,根据JSP / Servlet规范只有特定的目录结构用于部署目的 耳朵(企业档案) - 类似于jar文件。具有遵循J2EE要求的目录结构,以便可以在J2EE应用程序服务器上部署它。 - 可以包含多个JAR和WAR文件答案 5 :(得分:11)
JAR文件
JAR(Java Archive的缩写)文件允许组合使用多个文件 文件分成一个。带有' .jar'的文件;扩展被利用 软件开发人员分发Java类和各种元数据。 它们还包含库和资源文件以及附件文件 (例如属性文件)。
用户可以使用Java Development Kit提取和创建JAR文件 (JDK)' .jar'命令。也可以使用ZIP工具。
JAR文件具有可选的清单文件。清单文件中的条目 规定JAR文件的使用。 A'主要'文件类的类规范 表示文件是分离的或“独立的”#39;程序
WAR文件
WAR(或Web应用程序归档)文件可以包含XML (可扩展标记语言)文件,Java类以及Java Server 用于Internet应用程序的页面。它也被用来标记 构成Web应用程序的库和Web页面。文件用 '.war'扩展包含用于服务器或JSP的Web应用程序(Java 服务器页面)容器。它有JSP,HTML(超文本标记 语言),JavaScript和用于创建上述内容的各种文件 网络应用。
WAR文件的结构允许特殊目录和 文件。它也可能有一个数字签名(非常类似于JAR文件) 显示代码的真实性。
EAR档案
EAR(Enterprise Archive)文件将JAR和WAR文件合并到一个 单个档案。这些文件带有'.ear'扩展名有一个目录 元数据。这些模块打包存档,以便顺利和 同时操作app服务器中的不同模块。
EAR文件还有部署描述符(XML文件) 这有效地决定了不同模块的部署。
答案 6 :(得分:6)
Ear文件提供了更多选项来配置与应用程序服务器的交互。
例如:如果应用程序服务器的hibernate版本比依赖项提供的版本旧,则可以将以下内容添加到ear-deployer-jboss-beans.xml中,以便JBOSS隔离类加载器并避免冲突:
<bean name="EARClassLoaderDeployer" class="org.jboss.deployment.EarClassLoaderDeployer">
<property name="isolated">true</property>
</bean>
或src / main / application / META-INF / jboss-app.xml:
<?xml version="1.0"?>
<jboss-app>
<loader-repository>
loader=nameofyourear.ear
<loader-repository-config>java2ParentDelegation=false</loader-repository-config>
</loader-repository>
</jboss-app>
这将确保您的应用程序和应用程序服务器之间没有类加载器冲突。
通常,类加载器机制的工作方式如下:
当类加载请求被呈现给类加载器时,它首先 要求其父类加载器完成请求。父母,在 转向,询问其父级,直到请求到达顶部 层次结构。如果类加载器位于层次结构的顶部 无法满足请求,然后调用它的子类加载器 负责加载课程。
通过隔离类加载器,您的耳朵类加载器将不会查找父类(= JBoss /其他AS类加载器)。 据我所知,战争档案无法实现。
答案 7 :(得分:6)
J2EE定义了三种类型的归档:
Java Archives(JAR) JAR文件封装了一个或多个Java类,清单和描述符。 JAR文件是存档的最低级别。 JAR文件在J2EE中用于打包EJB和客户端Java应用程序。
Web档案(WAR) WAR文件类似于JAR文件,但它们专门用于由Servlet,JSP和支持类构成的Web应用程序。
企业归档(EAR)“EAR文件包含构成特定J2EE应用程序的所有组件。
答案 8 :(得分:0)
为使项目易于运输,部署变得容易。 需要压缩成一个文件。 JAR(Java归档文件)组的.class文件
WAR(网络存档)-每次战争代表一个Web应用程序 -仅使用与Web相关的技术,例如servlet,可以使用jsps。 -可以在Tomcat服务器上运行 -仅由Web相关技术开发的Web应用程序jsp servlet html js -信息表示仅无交易。
EAR(企业档案)-每只耳朵代表一个企业应用程序 -我们可以使用j2ee中的任何东西,例如ejb,可以愉快地使用jms。 -可以在Glassfish之类的服务器上运行,而不能在Tomcat服务器上运行。 -诸如j2ee之类的通过任何技术开发的企业应用,如所有网络 应用程式加上ejbs jms等 -用信息表示进行交易。例如。银行应用,电信应用