¿Cuál es la diferencia entre un archivo .war y .ear?
¿Cuál es la diferencia entre un archivo .war y .ear?
Respuestas:
De 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 Enterprise Java Beans (archivos de clase) y el descriptor de implementación EJB se empaquetan como archivos JAR con extensión .jar
WAR: los módulos web que contienen archivos de clase Servlet, archivos JSP, archivos de soporte, 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 un archivo JAR con extensión .ear (archivo empresarial) y se implementan en Application Server.
Un WAR (Web Archive) 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 tiempo 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ñadas específicamente para el manejo de solicitudes web, por lo que es más un estilo de solicitud / respuesta de 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 web.xml
archivo en la WEB-INF
carpeta.
Un contenedor EJB aloja Enterprise Java Beans basado en la API EJB diseñada para proporcionar una funcionalidad comercial extendida como transacciones declarativas, seguridad de nivel de método declarativo y soporte multiprotocolo, por lo que es más un estilo RPC de computación distribuida . Los contenedores EJB requieren que los módulos EJB se empaqueten como archivos JAR ; estos tienen un ejb-jar.xml
archivo en la META-INF
carpeta.
Las aplicaciones empresariales pueden consistir en 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 ; estos son archivos JAR especiales que contienen un application.xml
archivo en la META-INF
carpeta.
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 envoltorio alrededor de los archivos WAR. Los contenedores web independientes como Tomcat y Jetty no admiten archivos EAR; estos no son servidores de aplicaciones completos. Las aplicaciones web en estos contenedores deben implementarse 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 raíz 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 de conector empaquetados como archivos RAR y módulos de cliente empaquetados como archivos JAR.
.jar
, .war
y .ear
los archivos son archivos zip simples, por lo tanto capaz de ser abierto por cualquier programa que pueda manejar archivos .zip ordinarios.
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 todos los HTML, JSP, imágenes, CSS, JavaScript y otros recursos de la aplicación web.
ear - archivo empresarial. 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.
Los archivos WAR (archivo web) contienen archivos de clase de servlet, JSP (páginas de servlet de Java), archivos HTML y gráficos, y otros archivos de soporte.
Los archivos EAR (archivo empresarial) contienen los archivos WAR junto con los archivos JAR que contienen el código.
Puede haber otras cosas en esos archivos, pero básicamente están destinados a lo que parecen: WAR para cosas de tipo web, EAR para cosas de tipo empresarial (WAR, código, conectores, etc.).
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 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' de Java Development Kit (JDK). También se pueden usar 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, así como páginas de Java Server para fines de aplicación de Internet. También se utiliza para marcar bibliotecas y páginas web que componen una aplicación web. Los archivos con la extensión '.war' contienen la aplicación web para usar con servidores o contenedores 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 y archivos especiales. También puede tener una firma digital (muy parecida a la de un archivo JAR) para mostrar la veracidad del código.
Archivos EAR
Un archivo EAR (Enterprise Archive) combina archivos JAR y WAR en un solo archivo. Estos archivos con la extensión '.ear' tienen un directorio para metadatos. Los módulos se empaquetan en un archivo para un funcionamiento fluido 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.
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 seriales 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 de clase / java. Pero puede contener cualquier archivo y estructura de directorios
war (archivos de aplicaciones web): similares a los archivos jar solo tienen una estructura de directorio específica según las especificaciones JSP / Servlet para fines de implementación
ear (archivos empresariales): similar a los archivos jar. tener una estructura de directorio que siga los requisitos de J2EE para que pueda implementarse en servidores de aplicaciones J2EE - puede contener múltiples archivos JAR y WAR
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 cargadores de clases y evitar conflictos:
<bean name="EARClassLoaderDeployer" class="org.jboss.deployment.EarClassLoaderDeployer">
<property name="isolated">true</property>
</bean>
o a 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 conflictos de carga 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 clase a un cargador de clases, primero le pide a su cargador de clases padre que cumpla con la solicitud. El padre, a su vez, le pregunta a su padre 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 ear no se verá en el padre (= JBoss / otro cargador de clases AS). Hasta donde sé, esto no es posible con los archivos de guerra.
J2EE define tres tipos de archivos:
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.
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.
Enterprise Archives (EAR) : un archivo EAR contiene todos los componentes que conforman una aplicación J2EE particular.
Para hacer que el proyecto sea transportado, la implementación es fácil. necesita comprimirse en un solo archivo. Grupo JAR (archivo java) de archivos .class
WAR (archivo web): cada guerra representa una aplicación web: use solo tecnologías relacionadas con la web como servlet, se pueden usar jsps. - puede ejecutarse en el servidor Tomcat - aplicación web desarrollada por tecnologías relacionadas con la web solo jsp servlet html js - representación de información solo sin transacciones.
EAR (archivo empresarial): cada oído representa una aplicación empresarial. Podemos usar cualquier cosa, desde j2ee como ejb, jms se puede usar felizmente. - puede ejecutarse en Glassfish como servidor, no en el servidor Tomcat. - aplicación empresarial desarrollada por cualquier tecnología, desde j2ee como todas las aplicaciones web más ejbs jms, etc. - realiza transacciones con representación de información. p.ej. Aplicación de banco, aplicación de telecomunicaciones
.JAR, .WAR and .EAR
Usted también puede ver 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