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.
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:
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 | <?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> |
4 comentarios:
Muy util tu información. Gracias.
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?
Muchas Gracias!!
Me parece una buena explicación, para ir conociendo un poco el tema. Sobre todo porque es fácil de entender.
Publicar un comentario