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


当前回答

Ear文件提供了配置与应用程序服务器交互的更多选项。

例如:如果应用服务器的hibernate版本比依赖项提供的版本旧,您可以为JBOSS在ear-deployer-jboss-beans.xml中添加以下内容以隔离类加载器并避免冲突:

<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> 

这将确保应用程序和应用服务器之间没有类加载器冲突。

通常,类加载器机制是这样工作的:

当一个类装入请求被提交给类装入器时,它首先被提交 请求它的父类装入器来完成请求。父类,在 Turn向它的父类请求类,直到请求到达顶部 层次结构。如果类装入器位于层次结构的顶部 不能满足请求,则调用它的子类装入器 负责加载类。

通过隔离类加载器,ear类加载器将不会查找父类(=JBoss /其他AS类加载器)。 据我所知,战争档案是不可能的。

其他回答

WAR (web archive)文件包含servlet类文件、jsp (Java servlet页面)、HTML和图形文件以及其他支持文件。

EAR(企业存档)文件包含WAR文件以及包含代码的JAR文件。

这些文件中可能还有其他内容,但它们的意思基本上就是它们听起来的意思:WAR用于web类型的东西,EAR用于企业类型的东西(战争,代码,连接器等)。

从GeekInterview:

In J2EE application, modules are packaged as EAR, JAR, and WAR based on their functionality JAR: EJB modules which contain enterprise java beans (class files) and EJB deployment descriptor are packed as JAR files with .jar extension WAR: Web modules which contain Servlet class files, JSP Files, supporting files, GIF and HTML files are packaged as a JAR file with .war (web archive) extension EAR: All the above files (.jar and .war) are packaged as a JAR file with .ear (enterprise archive) extension and deployed into Application Server.

WAR (Web Archive)是一个被加载到Java应用程序服务器的Web容器中的模块。Java应用服务器有两个容器(运行时环境)——一个是Web容器,另一个是EJB容器。

Web容器承载基于JSP或servlet API的Web应用程序(专门为Web请求处理而设计),因此更像是一种分布式计算的请求/响应风格。Web容器要求将Web模块打包为WAR文件——这是一个特殊的JAR文件,在Web - inf文件夹中有一个Web .xml文件。

EJB容器承载基于EJB API的企业java bean,旨在提供扩展业务功能,如声明性事务、声明性方法级安全性和多协议支持——因此更像是一种RPC风格的分布式计算。EJB容器要求EJB模块打包为JAR文件——这些文件在META-INF文件夹中有一个EJB - JAR .xml文件。

企业应用程序可以由一个或多个模块组成,这些模块可以是Web模块(打包为WAR文件),也可以是EJB模块(打包为JAR文件),或者两者都是。企业应用程序被打包为EAR文件——这些是特殊的JAR文件,其中包含META-INF文件夹中的application.xml文件。

基本上,EAR文件是包含WAR文件和JAR文件的超集。Java应用服务器允许在WAR文件中部署独立的web模块,尽管在内部,他们创建EAR文件作为WAR文件的包装器。像Tomcat和Jetty这样的独立web容器不支持EAR文件——它们不是成熟的应用服务器。这些容器中的Web应用程序只能作为WAR文件部署。

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

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

JAR文件

JAR (Java Archive的简称)文件允许将多个文件进行组合 文件变成一个单一的。带有“。jar”的文件;扩展被 软件开发人员分发Java类和各种元数据。 它们还保存库和资源文件,以及附件文件 (如属性文件)。

用户可以使用Java Development Kit的工具提取和创建JAR文件 (JDK). jar命令。也可以使用ZIP工具。

JAR文件有可选的清单文件。清单文件中的条目 规定JAR文件的用途。文件类的“主”类规范 将文件表示为分离的或“独立的”程序。

WAR文件

WAR(或Web应用程序存档)文件可以包含XML (可扩展标记语言)文件,Java类,以及Java服务器 网页,供互联网应用之用。它也被用于标记 库和Web页面组成了Web应用程序。文件 ”。war的扩展包含了与服务器或JSP使用的Web应用程序 服务器页)容器。它有JSP, HTML(超文本标记 语言)、JavaScript和用于创建上述内容的各种文件 Web应用程序。

WAR文件的结构是这样的,以允许特殊目录和 文件。它还可能具有数字签名(非常类似于JAR文件) 以显示代码的准确性。

EAR文件

EAR(企业存档)文件将JAR和WAR文件合并为一个 单一档案。这些文件带有'。Ear '扩展有一个目录 元数据。这些模块被打包成一个存档,以便平滑和 在应用服务器中同时操作不同的模块。

EAR文件还有部署描述符(XML文件) 它有效地规定了不同模块的部署。

使项目的传输、部署变得容易。 需要压缩成一个文件。 JAR (java存档).class文件组

WAR (web存档)——每个WAR代表一个web应用程序 -只使用web相关技术,如servlet, jsp可以使用。 -可以在Tomcat服务器上运行 web应用程序开发的web相关技术只有JSP servlet HTML js - info只表示没有事务。

EAR(企业存档)——每个EAR代表一个企业应用程序 -我们可以使用j2ee中的任何东西,比如ejb, JMS都可以愉快地使用。 -可以在Glassfish服务器上运行,而不是在Tomcat服务器上。 -任何技术开发的企业应用程序,从j2ee到所有web 应用程序加上ejbs JMS等。 -使用信息表示进行交易。如。银行app,电信app