2009-10-20 59 views
460

¿Cuál es la diferencia entre un archivo .war y .ear?.war vs .ear archivo

+2

Para entender más sobre ** '.JAR, .WAR y .EAR' ** Se puede ver también un video tutorial. Es muy simple o más comprensible. Explicará cuál es ** la diferencia ** entre **. JAR, .WAR ** y **. EAR ** ** Video Tutorial **: [Diferencia entre .JAR, .WAR y .EAR] (https: //www.youtube.com/watch?v=ecxIBCu2-b4) –

+1

Tuve problemas para seguir ese video debido al fuerte acento indio del hablante. – raarts

Respuesta

431

De GeekInterview:

En aplicación J2EE, los módulos se empaquetan como EAR, JAR y la guerra en base a su funcionalidad

JAR: módulos EJB que contienen Enterprise Java Beans (archivos de clase) y EJB descriptor de despliegue se empaquetan como archivos JAR con extensión .jar

WAR: Los módulos web que contienen archivos de clase Servlet, archivos JSP, archivos de apoyo, archivos GIF y HTML se empaquetan como archivo JAR w ith .war (archivo web) extensión

EAR: Todos los archivos anteriores (.jar y .war) se empaquetan como archivo JAR con la extensión .ear (Enterprise Archive) y se implementan en Application Server.

+49

Esta publicación me hace pensar que EAR es solo JARS y WARS juntos en un gran EAR, lo cual no es tan simple. –

+3

Todos en esencia son Archive (JAR) pero con extensiones diferentes para implicar su naturaleza/contenido. – KNU

+1

Los EAR y los JAR separados para los granos son innecesarios en la mayoría de los casos. Una GUERRA simple con todas las clases en un archivo es normal. Aquí hay una explicación más elaborada: http://www.adam-bien.com/roller/abien/entry/ears_wars_and_size_matters –

24

Los archivos WAR (archivo web) contienen archivos de clase de servlet, JSP (páginas de servlet Java), HTML y archivos gráficos, y otros archivos de apoyo.

Los archivos EAR (Enterprise Archive) contienen los archivos WAR junto con los archivos JAR que contienen el código.

Puede haber otras cosas en esos archivos, pero básicamente se refieren a lo que parecen significar: WAR para cosas de tipo web, EAR para cosas de tipo empresarial (WAR, código, conectores, etc.).

+2

En mi caso, siempre despliego WAR con jar en la carpeta WEB-INF/lib y eso funciona. Entonces, ¿por qué debería usar el archivo EAR? – swapyonubuntu

+2

@swapyonubuntu, si solo está implementando una única aplicación web (más específicamente, un solo contexto de servlet), no hay nada de malo con solo hacer los archivos WAR. Los archivos EAR son mucho mejores para las aplicaciones empresariales completas, incluidas las que tienen muchas aplicaciones web. – paxdiablo

+1

En esta era de microservicios, ¿no tendría más sentido mantener cada WAR completamente separado y desplegado por separado en lugar de agruparlos en un EAR monolítico? –

35

war - archivo web. Se utiliza para implementar aplicaciones web de acuerdo con el estándar de servlet. Es un archivo jar que contiene un directorio especial llamado WEB-INF y varios archivos y directorios dentro de él (web.xml, lib, classes) así como todo el HTML, JSP, imágenes, CSS, JavaScript y otros recursos de la aplicación web.

ear - enterprise archive. Se utiliza para implementar aplicaciones empresariales que contienen EJB, aplicaciones web y bibliotecas de terceros. También es un archivo jar, tiene un directorio especial llamado APP-INF que contiene el archivo application.xml y contiene archivos jar y war.

448

Un WAR (Web Archive) es un módulo que se carga en un Web container de un Java Application Server. Un servidor de aplicaciones Java tiene dos contenedores (entornos de tiempo de ejecución): uno es un contenedor web y el otro es un contenedor EJB.

El contenedor Web aloja aplicaciones Web basados ​​en JSP o la API de Servlets - diseñado específicamente para servir peticiones de web - por lo que más de un estilo de petición/respuesta de la computación distribuida. Un contenedor web requiere que el módulo web se empaquete como un archivo WAR, que es un archivo JAR especial con un archivo web.xml en la carpeta WEB-INF.

Un contenedor EJB acoge Enterprise Java Beans basado en la API de EJB diseñado para proporcionar funcionalidad de negocio extendidos como son las transacciones declarativas, seguridad a nivel de método declarativa y soporte multiprotocolo - para que más de un estilo RPC de la computación distribuida. Los contenedores EJB requieren que los módulos EJB se empaqueten como archivos JAR; estos tienen un archivo ejb-jar.xml en la carpeta META-INF.

Las aplicaciones empresariales pueden consistir en uno o más módulos que pueden ser módulos web (empaquetados como un archivo WAR) o módulos EJB (empaquetados como un archivo JAR) o ambos. Las aplicaciones empresariales se empaquetan como archivos EAR; estos son archivos JAR especiales que contienen un archivo application.xml en la carpeta META-INF.

Básicamente archivos EAR son un superconjunto que contiene los archivos WAR y archivos JAR. Los servidores de aplicaciones Java permiten la implementación de módulos web independientes en un archivo WAR, aunque internamente crean archivos EAR como un contenedor de archivos WAR. Los contenedores web autónomos como Tomcat y Jetty no son compatibles con los archivos EAR; estos no son servidores de aplicaciones completos. Las aplicaciones web en estos contenedores deben desplegarse solo como archivos WAR.

En servidores de aplicaciones: los archivos EAR contienen configuraciones tales como mapeo de roles de seguridad de aplicaciones, mapeo de referencias EJB y mapeo de URL raíz de contexto de módulos web.

Además de los módulos web y los módulos EJB, los archivos EAR también pueden contener módulos de conector empaquetados como archivos RAR y módulos de cliente empaquetados como archivos JAR.

+21

+1 porque esta respuesta describe por qué es posible que desee usar uno u otro. –

+1

¿Puedo extraerlos (por ejemplo, fileName.jar) con 7Zip/WinZip/WinRar, etc.? – KNU

+4

@KNU sí, los archivos '.jar',' .war' y '.ear' son simples archivos comprimidos, por lo que pueden abrirse con cualquier programa que pueda manejar archivos ordinarios .zip. – acdcjunior

6

Los archivos ear proporcionan más opciones para configurar la interacción con el servidor de aplicaciones.

Por ejemplo: si la versión de hibernación del servidor de aplicaciones es anterior a la proporcionada por sus dependencias, puede agregar lo siguiente a ear-deployer-jboss-beans.xml para JBOSS para aislar clasificadores y evitar conflictos:

<bean name="EARClassLoaderDeployer" class="org.jboss.deployment.EarClassLoaderDeployer">  
    <property name="isolated">true</property> 
</bean> 

oa src// aplicación/META-INF/jboss-app.xml principal:

<?xml version="1.0"?> 
<jboss-app> 
<loader-repository> 
    loader=nameofyourear.ear 
<loader-repository-config>java2ParentDelegation=false</loader-repository-config> 
</loader-repository> 
</jboss-app> 

Esto se asegurará de que no hay conflicto cargador de clases entre la aplicación y el servidor de aplicaciones.

Normalmente el mecanismo cargador de clases funciona así:

Cuando una petición de carga de clases se presenta a un cargador de clases, primero pide a su cargador de clases padre para completar la petición. El padre, en , le pregunta a su padre por la clase hasta que la solicitud llegue a la parte superior de la jerarquía. Si el cargador de clases en la parte superior de la jerarquía no puede cumplir la solicitud, entonces el cargador de clases hijo que lo llamó es responsable de cargar la clase.

Al aislar los cargadores de clases, su cargador de clases ear no se verá en el elemento primario (= cargador de clases JBoss/otro AS). Hasta donde sé, esto no es posible con los archivos war.

+0

KNU: Este uso de un archivo ear es más válido que simplemente usarlo porque "contiene archivos de clase de servlet, archivos JSP, archivos de apoyo, archivos GIF y HTML" como se indica en la respuesta aceptada. Como los archivos war también pueden contener gif, html, jsp, servlets, ... Si todos respondieran "por su fuerza", tal vez todos podamos ser más sabios sobre el tema en cuestión. – Mark

+0

Maven lo hace por usted ¿no? Puede especificar dependencias por versión y se incluyen en la carpeta/lib. (en un archivo de guerra) – Sebas

+0

Sí, pero el servidor de aplicaciones/contenedor de servlets puede elegir anularlos en la carpeta lib con las librerías que proporciona en su propia carpeta lib. Esto puede evitar eso. Todo depende del mecanismo de carga de clases utilizado. – Mark

9

Consulte: http://www.wellho.net/mouth/754_tar-jar-war-ear-sar-files.html

alquitrán (archivos de cinta) - formato utilizado es el archivo escrito en unidades de serie del nombre de fichero, tamaño del archivo, fileData - sin compresión.puede ser enorme

Jar (archivo java) - técnicas de compresión utilizadas - generalmente contiene información de Java como clase/archivos java. Pero puede contener todos los archivos y la estructura de directorios

(archivos de aplicaciones web) guerra - similar como archivos jar sólo tienen estructura de directorios específica según especificación JSP/Servlet para fines de implementación

oreja (archivadores de empresa) - Similares como archivos jar tener una estructura de directorios que cumpla con los requisitos J2EE para que pueda implementarse en los servidores de aplicaciones J2EE. - puede contener múltiples JAR y WAR archivos

6

J2EE define tres tipos de archivos:

  1. Archivo de Java (JAR) Un archivo JAR encapsula una o más clases de Java, un manifiesto y un descriptor . Los archivos JAR son el nivel más bajo de archivo. Los archivos JAR se usan en J2EE para empaquetar EJB y aplicaciones Java del lado del cliente.

  2. Archivos Web (WAR) archivos WAR son similares a los archivos JAR, excepto que son específicamente para aplicaciones web hechas de servlets, JSP, y clases de apoyo.

  3. Enterprise Archives (EAR) "Un archivo EAR contiene todos los componentes que componen una determinada aplicación J2EE.

1

JAR archivos

Un JAR (abreviatura de Java Archive) de archivos permite la combinación de varios archivos en uno solo. Archivos con el '.jar'; Los desarrolladores de software utilizan la extensión para distribuir clases Java y varios metadatos. También contienen bibliotecas y archivos de recursos, así como los archivos accesorios (como archivos de propiedades).

Los usuarios pueden extraer y crear archivos JAR con Java Development Kit ' s (JDK) '.jar' comando. Las herramientas ZIP también pueden ser utilizadas.

Los archivos JAR tienen archivos de manifiesto opcionales. Las entradas dentro del archivo de manifiesto prescriben el uso del archivo JAR. Una especificación de clase 'principal' para una clase de archivo denota el archivo como un programa separado o 'autónomo'.

UNA GUERRA (o archivo de la aplicación Web) archivos WAR Archivos pueden comprender XML archivos (Extensible Markup Language), las clases de Java, así como Java Server páginas para fines de aplicación de Internet. También se emplea para marcar las bibliotecas y las páginas web que componen una aplicación web. Archivos con La extensión '.war ' contiene la aplicación web para su uso con contenedores de servidor o JSP (Java Server Page). Tiene JSP, HTML (lenguaje de marcado de hipertexto ), JavaScript y varios archivos para crear las aplicaciones web antes mencionadas.

Un archivo WAR está estructurado como tal para permitir directorios especiales y archivos . También puede tener una firma digital (muy similar a la de un archivo JAR) para mostrar la veracidad del código.

archivo

una oreja EAR Archivos (Enterprise Archive) se fusiona archivos JAR y WAR en un solo archivo . Estos archivos con la extensión '.ear ' tienen un directorio para los metadatos . Los módulos se empaquetan en el archivo para un funcionamiento simultáneo y sin problemas de de los diferentes módulos dentro de un servidor de aplicaciones.

El archivo EAR también tiene descriptores de implementación (que son archivos XML) que dictan con eficacia el despliegue de los diferentes módulos.

enter image description here

Cuestiones relacionadas