.war文件和.ear文件有什么区别?
.war文件和.ear文件有什么区别?
WAR(Web Archive)是一个模块,它被加载到Java应用服务器的Web容器中。Java应用服务器有两个容器(运行环境)——一个是Web容器,另一个是EJB容器。
Web容器基于JSP或Servlets 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文件―这些是包含META-INF
文件夹中的application.xml
文件的特殊JAR文件。
基本上,EAR文件是一个超集,包含WAR文件和JAR文件。Java应用服务器允许在WAR文件中部署独立的Web模块,但在内部,它们创建EAR文件作为WAR文件的包装器。独立的Web容器,例如Tomcat和Jetty不支持EAR文件―这些不是完整的应用服务器。这些容器中的Web应用程序只能以WAR文件形式部署。
在应用服务器中,EAR文件包含配置,例如应用程序安全角色映射、EJB引用映射和Web模块的上下文根URL映射。
除了Web模块和EJB模块,EAR文件还可以包含打包为RAR文件的连接器模块和打包为JAR文件的客户端模块。
.jar
、.war
和.ear
文件都是简单的zip压缩文件,因此可以被任何能处理普通.zip文件的程序打开。 - acdcjuniorcontext-root
)?为什么在EJB模块中的Websocket不可访问,而在WAR模块中则可访问?有没有解决办法? - Hosein Aqajani在J2EE应用程序中,模块根据其功能打包为EAR、JAR和WAR。
JAR: 包含企业Java Bean(类文件)和EJB部署描述符的EJB模块被打包为扩展名为.jar的JAR文件。
WAR: 包含Servlet类文件、JSP文件、支持文件、GIF和HTML文件的Web模块被打包为扩展名为.war(Web归档)的JAR文件。
EAR: 所有上述文件(.jar和.war)都被打包为扩展名为.ear(企业文档)的JAR文件,并部署到应用服务器中。
WAR - 网络存档。它用于根据Servlet标准部署Web应用程序。它是一个包含特殊目录WEB-INF和其中的多个文件和目录(web.xml、lib、classes)以及Web应用程序的所有HTML、JSP、图像、CSS、JavaScript和其他资源的jar文件。
EAR - 企业存档。它用于部署包含EJBs、Web应用程序和第三方库的企业应用程序。它也是一个jar文件,具有一个名为APP-INF的特殊目录,其中包含application.xml文件,并且包含jar和war文件。
WAR(Web Archive)文件包含Servlet类文件、JSP(Java Servlet页面)、HTML和图形文件以及其他支持文件。
EAR(Enterprise Archive)文件包含WAR文件以及包含代码的JAR文件。
这些文件中可能还有其他内容,但它们基本上是为其名称所表示的内容而设计的:WAR用于Web类型的内容,EAR用于企业类型的内容(WARs、代码、连接器等)。
JAR文件
JAR(Java存档)文件允许将多个文件合并为一个文件。扩展名为“.jar”的文件被软件开发人员用于分发Java类和各种元数据,其中还包括库和资源文件以及附件文件(如属性文件)。
用户可以使用Java开发工具包(JDK)的“.jar”命令或ZIP工具提取和创建JAR文件。
JAR文件还有可选的清单文件。清单文件中的条目规定了JAR文件的使用方式。“主”类规范指定一个文件类作为一个独立的或“独立运行”的程序。
WAR文件
WAR(Web应用程序归档)文件可包含XML(可扩展标记语言)文件、Java类以及用于Internet应用程序的Java Server页面。它还用于标记构成Web应用程序的库和网页。扩展名为“.war”的文件包含Web应用程序,可用于服务器或JSP(Java Server Page)容器。它包含用于创建上述Web应用程序的JSP、HTML(超文本标记语言)、JavaScript以及各种文件。
WAR文件的结构允许特殊目录和文件。它还可以具有数字签名(与JAR文件类似),以显示代码的真实性。
EAR文件
EAR(企业存档)文件将JAR和WAR文件合并为一个档案。这些扩展名为“.ear”的文件具有用于元数据的目录。模块打包到一个归档中,以便应用服务器的不同模块可以平滑且同时运行。
EAR文件还具有部署描述符(这些是XML文件),可以有效地指示不同模块的部署。
参考:http://www.wellho.net/mouth/754_tar-jar-war-ear-sar-files.html
tar(磁带档案) - 使用的格式是按序列编写的文件单位:文件名、文件大小、文件数据 - 不压缩,可能很大
Jar(Java 档案) - 使用压缩技术 - 通常包含 Java 信息,如类和 Java 文件。但也可以包含任何文件和目录结构
war(Web 应用程序档案) - 类似于 Jar 文件,只有特定的目录结构符合 JSP/Servlet 规范以供部署使用
ear(企业档案) - 类似于 Jar 文件。具有遵循 J2EE 要求的目录结构,以便在 J2EE 应用服务器上进行部署。 - 可以包含多个 JAR 和 WAR 文件
Ear文件提供更多选项来配置与应用服务器的交互。
例如:如果应用服务器的Hibernate版本比您的依赖项提供的版本旧,您可以将以下内容添加到ear-deployer-jboss-beans.xml中,以便JBOSS隔离类加载器并避免冲突:
<bean name="EARClassLoaderDeployer" class="org.jboss.deployment.EarClassLoaderDeployer">
<property name="isolated">true</property>
</bean>
<?xml version="1.0"?>
<jboss-app>
<loader-repository>
loader=nameofyourear.ear
<loader-repository-config>java2ParentDelegation=false</loader-repository-config>
</loader-repository>
</jboss-app>
Java Archive (JAR) JAR文件封装一个或多个Java类、清单和描述符。JAR文件是最基本的归档文件类型。在J2EE中,JAR文件用于打包EJB和客户端Java应用程序。
Web Archive (WAR) WAR文件与JAR文件相似,不同之处在于它们专门用于创建由Servlets、JSPs和支持类构成的Web应用程序。
Enterprise Archive (EAR) EAR文件包含构成特定J2EE应用程序的所有组件。