¿Cuál es el concepto principal para crear archivos EAR en Java?

EAR ( E p. De aplicación a R chive ) es un formato de archivo utilizado por Java EE para empaquetar uno o más módulos en un único archivo, de modo que el despliegue de los diversos módulos en un servidor de aplicaciones se realiza de manera simultánea y coherente. También contiene archivos XML llamados descriptores de implementación que describen cómo implementar los módulos.

Ant, Maven o Gradle se pueden usar para construir archivos EAR.

Estructura de archivo

Un archivo EAR es un archivo JAR estándar (y, por lo tanto, un archivo Zip) con una extensión .ear, con una o más entradas que representan los módulos de la aplicación, y un directorio de metadatos llamado META-INF que contiene uno o más descriptores de implementación.

Módulo [ editar ]

Los desarrolladores pueden incrustar varios artefactos dentro de un archivo EAR para su implementación por los servidores de aplicaciones:

  • Un módulo web tiene una extensión .war. Es una unidad desplegable que consta de uno o más componentes web, otros recursos y un descriptor de implementación de aplicaciones web. El módulo web está contenido en una jerarquía de directorios y archivos en un formato estándar de aplicación web.
  • Las clases de POJO Java pueden implementarse en archivos .jar.
  • Un módulo Enterprise Java Bean tiene una extensión .jar y contiene en sus propios META-INF directorio META-INF que describen las clases persistentes implementadas. Los beans de entidad desplegados se vuelven visibles para otros componentes y, si se exportan de forma remota, a clientes remotos. Los beans de mensaje y los beans de sesión están disponibles para acceso remoto.
  • Un módulo Adaptador de recursos tiene una extensión .rar.

Aislamiento de clase

La mayoría de los servidores de aplicaciones cargan clases desde un archivo EAR desplegado como un árbol aislado de cargadores de clases Java, aislando la aplicación de otras aplicaciones, pero compartiendo clases entre módulos desplegados. Por ejemplo, un archivo WAR desplegado podría crear instancias de clases definidas en un archivo JAR que también se incluye en el archivo EAR que contiene, pero no necesariamente en los archivos JAR de otros archivos EAR. Una razón clave para este comportamiento es permitir la separación completa entre aplicaciones que usan singletons estáticos (por ejemplo, Log4J), lo que de otro modo confundiría la configuración entre aplicaciones separadas. Esto también permite implementar diferentes versiones de aplicaciones y bibliotecas en paralelo.

Los servidores de aplicaciones JBoss anteriores a la Versión 5 fueron notables porque no aíslan los componentes implementados. Una aplicación web implementada en un archivo EAR tendría acceso a clases en otros archivos EAR y WAR. Esta es una política algo controvertida. El diseño de Unified Classloader reduce la sobrecarga de comunicaciones entre las aplicaciones en ejecución, ya que los datos de clase se pueden compartir por referencia o copias simples. También permite a los desarrolladores evitar tener que comprender los problemas que puede crear un árbol de cargadores de clases. Sin embargo, evita que se implementen diferentes versiones de bibliotecas dependientes en aplicaciones separadas. JBoss 4.0.2 cambió a un cargador de clases jerárquico, pero en la versión 4.0.3 volvió a un cargador de clases unificado por razones de compatibilidad con versiones anteriores. Ahora hay una opción de configuración para cambiar este comportamiento. JBoss 5.x, 6.xy 7.x ya no utilizan la carga de clase unificada.

Directorio META-INF

El directorio META-INF contiene al menos el descriptor de implementación application.xml , conocido como Java EE Deployment Descriptor . Contiene las siguientes entidades XML:

  • icon , que especifica las ubicaciones de las imágenes que representan la aplicación. Se realiza una subdivisión para small-icon large-icon .
  • display-name , que identifica la aplicación
  • description
  • Un elemento de module para cada módulo en el archivo
  • Cero o más elementos de security-role para los roles de seguridad global en la aplicación

Cada elemento del module contiene un elemento ejb , web o java que describe los módulos individuales dentro de la aplicación. Los módulos web también proporcionan una context-root que identifica el módulo web por su URL.

Junto al descriptor de despliegue de Java EE puede haber cero o más descriptores de despliegue en tiempo de ejecución . Estos se utilizan para configurar parámetros Java EE específicos de la implementación.

Si está involucrando un proyecto de aplicación J2EE (ejb), debe crear un archivo empresarial (EAR) para implementar su aplicación en el servidor de aplicaciones como JBOSS, Weblogic o Web Sphere.