Empaquetado de Aplicaciones JEE - Archivos EAR


Los archivos EAR (Enterprise Archive) es un formato utilizado en la arquitectura JEE para desplegar de manera coherente y simultánea varios módulos en un servidor de aplicaciones.

Contiene archivos XML denominados descriptores de despliegue que describen como desplegar los módulos contenidos en el paquete EAR.

Como esta información en los descriptores de despliegue es puramente declarativa, podemos modificarla sin necesidad de recompilar el código fuente de la aplicación.

Existen dos tipos de descriptores JEE:

  • Descriptores de despliegue JEE (JEE deployment descriptor): configuran las opciones de despliegue de cualquier componente de Java Empresarial
  • Descriptores de despliegue del entorno de ejecución (runtime deployment descriptor): configuran opciones del entorno de ejecución de nuestra aplicación empresarial, tales como las opciones de caché en el servidor

Cuando hablamos de módulos JEE, nos referimos a uno o más componentes JEE, tales como páginas JSP o servlets para el mismo tipo de contenedor (contenedor Web en este caso) y un descriptor de despliegue de componentes para ese tipo de contenedor.





Los tipos de módulos JEE son:

  • Módulos Web que pueden contener servlets, JSP, HTML, imágenes, etc. y además un descriptor de despliegue Web.Son empaquetados en archivos WAR
  • Módulos EJB, que pueden contener las clases de los beans empresariales y un descriptor de despliegue de EJB. Son empaquetados en archivos JAR.
  • Módulos de aplicación cliente. Contienen clases que van a desplegarse en el cliente y un descriptor de despliegue de aplicación cliente. Son empaquetados en archivos JAR.
  • Módulos de adaptadores de recursos, los cuáles contienen interfaces Java, librerías nativas, etc. junto al descriptor de despliegue de adaptador de recursos. Son empaquetados en archivos JAR pero con extensión .rar (resource adapter archive).

Los paquetes de despliegue EAR pueden construirse desde Eclipse u otros entornos integrados de desarrollo o vía línea comando utilizando utilidades como Apache Ant o Apache Maven.

Estructura de un archivo EAR



Construcción de un archivo EAR desde Eclipse

Para crear o generar un archivo EAR desde eclipse, creamos un nuevo proyecto de tipo Enterprise Application Project. 



Este proyecto le vamos a llamar EjemploEAR y lo vamos a crear en nuestro workspace de eclipse predeterminado.


En la próxima pantalla vamos a elegir las dependencias de módulos JEE que queremos añadir a nuestro archivo EAR.


En este caso, nuestro archivo EAR solo contiene dos proyectos WAR que queremos desplegar al mismo tiempo: EjemploWar y EjemploWar2.

Una vez creado el proyecto vamos a exportar el archivo EAR. Con el botón derecho sobre el proyecto seleccionamos Export y luego EAR file.



En la próxima pantalla seleccionamos la ruta donde vamos a crear el archivo EAR, que sea optimizado para nuestro servidor de aplicaciones y que se sobreescriba el fichero a crear en caso de que exista en la ruta que hemos elegido.


 Una vez creado el archivo, lo podemos abrir con cualquier utilidad que pueda abrir archivos ZIP y veremos que ha creado una carpeta META-INF y que en el raiz del proyecto tiene los dos archivos WAR que hemos añadido como dependencias.



 Si miramos dentro de la carpeta META-INF veremos tres archivos: 


  • MANIFEST.MF que es al archivo de manifiesto de cualquier paquete de despliegue JEE
  • El descriptor de despliegue sobre el servidor de aplicaciones geronimo-application.xml
  • El descriptor de despliegue de las aplicaciones Web application.xml


Por ejemplo, el descriptor de despliegue sobre el servidor geronimo-application.xml tiene el siguiente contenido:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<?xml version="1.0" encoding="UTF-8"?><app:application application-name="EjemploEAR" xmlns:app="http://geronimo.apache.org/xml/ns/j2ee/application-2.0" xmlns:bp="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:client="http://geronimo.apache.org/xml/ns/j2ee/application-client-2.0" xmlns:conn="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2" xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2" xmlns:ejb="http://openejb.apache.org/xml/ns/openejb-jar-2.2" xmlns:jaspi="http://geronimo.apache.org/xml/ns/geronimo-jaspi" xmlns:log="http://geronimo.apache.org/xml/ns/loginconfig-2.0" xmlns:name="http://geronimo.apache.org/xml/ns/naming-1.2" xmlns:pers="http://java.sun.com/xml/ns/persistence" xmlns:pkgen="http://openejb.apache.org/xml/ns/pkgen-2.1" xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0" xmlns:web="http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1">
    <dep:environment>
        <dep:moduleId>
            <dep:groupId>default</dep:groupId>
            <dep:artifactId>EjemploEAR</dep:artifactId>
            <dep:version>1.0</dep:version>
            <dep:type>car</dep:type>
        </dep:moduleId>
    </dep:environment>
</app:application>

El descriptor de despliegue de las aplicaciones Web application.xml tiene a su vez el siguiente contenido:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" id="Application_ID" version="6">
  <display-name>EjemploEAR</display-name>
  <module>
    <web>
      <web-uri>EjemploWar2.war</web-uri>
      <context-root>EjemploWar2</context-root>
    </web>
  </module>
  <module>
    <web>
      <web-uri>EjemploWar.war</web-uri>
      <context-root>EjemploWar</context-root>
    </web>
  </module>
</application>

posted under , , |

4 comentarios:

Ronald Orantes dijo...

Muy util tu información. Gracias.

Unknown dijo...

Hola, gracias por tu información...Sabes cómo se pueden omitir los archivos .java y que sólo queden los .class en el EAR?

Anónimo dijo...

Muchas Gracias!!

Unknown dijo...

Me parece una buena explicación, para ir conociendo un poco el tema. Sobre todo porque es fácil de entender.

Publicar un comentario

Entrada más reciente Entrada antigua Inicio