tutorial apis java java-ee deployment

java - apis - Archivo.ear vs.war



java ee 8 (8)

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


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

tar (archivos de cinta): el formato utilizado es un archivo escrito en unidades seriadas de fileName, fileSize, fileData, sin compresión. puede ser enorme

Jar (archivo java) - técnicas de compresión utilizadas - generalmente contiene información java como archivos class / java. Pero puede contener cualquier archivo y estructura de directorios.

war (archivos de aplicaciones web) - similares, como los archivos jar, solo tienen una estructura de directorio específica según las especificaciones JSP / Servlet para fines de implementación

ear (archivos de empresa) - similares a los archivos jar. tener una estructura de directorios que cumpla con los requisitos de J2EE para que pueda implementarse en los servidores de aplicaciones J2EE. - Puede contener múltiples archivos JAR y WAR


Desde GeekInterview :

En la aplicación J2EE, los módulos se empaquetan como EAR, JAR y WAR según su funcionalidad

JAR: los módulos EJB que contienen beans Java de empresa (archivos de clase) y el descriptor de despliegue de EJB se empaquetan como archivos JAR con extenstion .jar

WAR: los módulos web que contienen archivos de clase Servlet, archivos JSP, archivos compatibles, archivos GIF y HTML se empaquetan como un archivo JAR con extensión .war (archivo web)

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


J2EE define tres tipos de archivos:

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

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

  3. Enterprise Archives (EAR) ”Un archivo EAR contiene todos los componentes que conforman una aplicación J2EE particular.


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

Los archivos EAR (archivo empresarial) contienen los archivos WAR junto con los archivos JAR que contienen código.

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


Los archivos de oído 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 más antigua que la proporcionada por sus dependencias, puede agregar lo siguiente a ear-deployer-jboss-beans.xml para que JBOSS aísle los cargadores de clases y evite conflictos:

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

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

Esto asegurará que no haya conflicto de cargador de clases entre su aplicación y el servidor de aplicaciones.

Normalmente el mecanismo del cargador de clases funciona así:

Cuando se presenta una solicitud de carga de clases a un cargador de clases, primero le pide a su cargador de clases principal que complete la solicitud. El padre, a su vez, 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 con la solicitud, entonces el cargador de clases secundario que lo llamó es responsable de cargar la clase.

Al aislar los cargadores de clases, su cargador de clases de oreja no se verá en el padre (= JBoss / otro AS classloader). Por lo que sé, esto no es posible con archivos war.


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

El contenedor web aloja aplicaciones web basadas en JSP o la API de Servlets, diseñada específicamente para el manejo de solicitudes web, por lo que se trata más de un estilo de solicitud / respuesta de computación distribuida . Un contenedor web requiere que el módulo web esté empaquetado como un archivo WAR , que es un archivo JAR especial con un archivo web.xml en la carpeta WEB-INF .

Un contenedor de EJB aloja beans Java de Enterprise basados ​​en la API de EJB diseñada para proporcionar funcionalidad empresarial extendida, como transacciones declarativas, seguridad declarativa a nivel de método y soporte multiprotocolo, por lo que se trata más de un estilo RPC de 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 constar de uno o más módulos que pueden ser módulos web (empaquetados como un archivo WAR), módulos EJB (empaquetados como un archivo JAR) o ambos. Las aplicaciones empresariales se empaquetan como archivos EAR : son archivos JAR especiales que contienen un archivo application.xml en la carpeta META-INF .

Básicamente, los archivos EAR son un superconjunto que contiene 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 una envoltura alrededor de los archivos WAR. Los contenedores web independientes, como Tomcat y Jetty , no admiten archivos EAR, no son servidores de aplicaciones completos. Las aplicaciones web en estos contenedores se implementarán solo como archivos WAR.

En los servidores de aplicaciones, los archivos EAR contienen configuraciones como la asignación de roles de seguridad de la aplicación, la asignación de referencia EJB y la asignación de URL de contexto de los módulos web.

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


guerra - 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, clases), así como todo el HTML, JSP, imágenes, CSS, JavaScript y otros recursos de la aplicación web.

oído - archivo de la empresa. 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.


Archivos JAR

Un archivo JAR (abreviatura de Java Archive) 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 de Java y varios metadatos. Estos también contienen bibliotecas y archivos de recursos, así como archivos accesorios (como archivos de propiedades).

Los usuarios pueden extraer y crear archivos JAR con el comando ''.jar'' del kit de desarrollo de Java (JDK). También se pueden utilizar herramientas ZIP.

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 "independiente".

Archivos WAR

Los archivos WAR (o archivo de aplicación web) pueden comprender archivos XML (lenguaje de marcado extensible), clases de Java y páginas de servidor de Java para fines de aplicación de Internet. También se emplea para marcar bibliotecas y páginas web que conforman una aplicación web. Los archivos con la extensión ''.war'' contienen la aplicación web para usar con el servidor o los contenedores JSP (Java Server Page). Tiene JSP, HTML (lenguaje de marcado de hipertexto), JavaScript y varios archivos para crear las aplicaciones web mencionadas anteriormente.

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

Archivos EAR

Un archivo EAR (Enterprise Archive) combina los archivos JAR y WAR en un solo archivo. Estos archivos con la extensión ''.ear'' tienen un directorio para metadatos. Los módulos están empaquetados en un archivo comprimido para un funcionamiento suave y simultáneo 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 efectivamente la implementación de los diferentes módulos.