.war和.ear文件有什么区别?
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.
战争网档案。它根据servlet标准部署web应用程序。它是一个jar文件,包含一个名为web - inf的特殊目录和其中的几个文件和目录(web.xml, lib, classes),以及所有的HTML, JSP,图像,CSS, JavaScript和其他web应用程序的资源
耳朵-企业档案。它用于部署包含ejb、web应用程序和第三方库的企业应用程序。它也是一个jar文件,它有一个名为APP-INF的特殊目录,其中包含application.xml文件,它包含jar和war文件。
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文件的客户机模块。
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类加载器)。 据我所知,战争档案是不可能的。
参见:http://www.wellho.net/mouth/754_tar-jar-war-ear-sar-files.html
焦油(磁带档案) —使用的格式为以fileName、fileSize、fileData为串行单位写入的文件 -不压缩。可以是巨大的
Jar (java存档) -使用的压缩技术 -通常包含Java信息,如类/ Java文件。但可以包含任何文件和目录结构
战争(web应用程序档案) -类似于jar文件只有特定的目录结构,根据JSP/Servlet规范用于部署目的
耳朵(企业档案) -类似jar文件。目录结构符合J2EE要求,这样它就可以部署在J2EE应用服务器上。 -可以包含多个JAR和WAR文件
J2EE定义了三种类型的档案:
Java Archives (JAR) JAR文件封装了一个或多个Java类、一个清单和一个描述符。JAR文件是最低级别的存档。JAR文件在J2EE中用于打包ejb和客户端Java应用程序。 Web Archives (WAR) WAR文件类似于JAR文件,除了它们专门用于由servlet、jsp和支持类构建的Web应用程序之外。 企业档案(EAR)“EAR文件包含组成特定J2EE应用程序的所有组件。
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
推荐文章
- 到底是什么导致了堆栈溢出错误?
- 为什么Android工作室说“等待调试器”如果我不调试?
- Java:路径vs文件
- ExecutorService,如何等待所有任务完成
- Maven依赖Servlet 3.0 API?
- 如何在IntelliJ IDEA中添加目录到应用程序运行概要文件中的类路径?
- getter和setter是糟糕的设计吗?相互矛盾的建议
- Android room persistent: AppDatabase_Impl不存在
- Java的String[]在Kotlin中等价于什么?
- Intellij IDEA上的System.out.println()快捷方式
- 使用Spring RestTemplate获取JSON对象列表
- Spring JPA选择特定的列
- URLEncoder不能翻译空格字符
- Java中的super()
- 如何转换JSON字符串映射<字符串,字符串>与杰克逊JSON