.war vs .ear文件

时间:2009-10-20 13:38:28

标签: java java-ee deployment

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

9 个答案:

答案 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文件的包装。诸如TomcatJetty之类的独立Web容器不支持EAR文件 - 这些文件不是完整的应用程序服务器。这些容器中的Web应用程序仅作为WAR文件部署。

在应用程序服务器中,EAR文件包含应用程序安全角色映射,EJB参考映射和Web模块的上下文根URL映射等配置。

除了Web模块和EJB模块之外,EAR文件还可以包含打包为RAR文件的连接器模块和打包为JAR文件的客户端模块。

答案 1 :(得分:468)

来自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中。

答案 2 :(得分:38)

战争 - 网络档案。它用于根据servlet标准部署Web应用程序。它是一个jar文件,包含一个名为WEB-INF的特殊目录,其中包含几个文件和目录(web.xml,lib,类)以及Web应用程序的所有HTML,JSP,图像,CSS,JavaScript和其他资源。

耳朵 - 企业档案。它用于部署包含EJB,Web应用程序和第三方库的企业应用程序。它也是一个jar文件,它有一个名为APP-INF的特殊目录,它包含application.xml文件,它包含jar和war文件。

答案 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文件) 这有效地决定了不同模块的部署。

enter image description here

答案 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定义了三种类型的归档:

  1. Java Archives(JAR) JAR文件封装了一个或多个Java类,清单和描述符。 JAR文件是存档的最低级别。 JAR文件在J2EE中用于打包EJB和客户端Java应用程序。

  2. Web档案(WAR) WAR文件类似于JAR文件,但它们专门用于由Servlet,JSP和支持类构成的Web应用程序。

  3. 企业归档(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等     -用信息表示进行交易。例如。银行应用,电信应用