Pages

viernes, 28 de septiembre de 2012

Empaquetado de Aplicaciones JEE - Archivos WAR


Los archivos WAR, son un tipo especial de JAR utilizado para distribuir los artefactos o contenido de las aplicaciones Web en tecnología JEE: páginas Web HTML o JSP,clases Java, servlets Java, archivos XML, librerías de etiquetas (tag libraries) y otros recursos.

Al igual que los JAR pueden estar firmados digitalmente por temas de seguridad.

Estructura de un archivo WAR





Los archivos WAR incluyen carpetas y archivos especiales. Se incluye la carpeta META-INF con el manifiesto como en los JAR, pero además está la carpeta WEB-INF específica de las aplicaciones Web.

Esta carpeta incluye la carpeta classes (donde se incluyen archivos .class de la aplicación), la carpeta lib (donde de incluyen otros JAR referenciados por la aplicación), el archivo web.xml y un descriptor de despliegue propio del servidor de aplicaciones donde vamos a desplegar nuestra aplicación.

El archivo web.xml contiene definiciones tales como la página de arranque por defecto de la aplicación web (etiqueta welcome-file).

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">  
  3.   <display-name>EjemploWar</display-name>  
  4.   <welcome-file-list>  
  5.     <welcome-file>EjemploWar.jsp</welcome-file>  
  6.   </welcome-file-list>  
  7. </web-app>  

El descriptor de despliegue, por lo general depende del servidor de aplicaciones que estemos utilizando. Si utilizamos por ejemplo WebSphere Application Server Community Edition, se creará un descriptor jeronimo-web.xml parecido a este:
  1. <?xml version="1.0" encoding="UTF-8"?><web:web-app 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">  
  2.     <dep:environment>  
  3.         <dep:moduleId>  
  4.             <dep:groupId>default</dep:groupId>  
  5.             <dep:artifactId>EjemploWar</dep:artifactId>  
  6.             <dep:version>1.0</dep:version>  
  7.             <dep:type>car</dep:type>  
  8.         </dep:moduleId>  
  9.     </dep:environment>  
  10.     <web:context-root>/EjemploWar</web:context-root>  
  11. </web:web-app>  
Creando un WAR desde Eclipse

Para crear un archivo WAR desde Eclipse, seleccionamos el proyecto que queremos exportar  y con el boton derecho del ratón buscamos las opciones "Export" y "WAR file".




Elegimos en que carpeta queremos crear el archivo WAR y yo añado que se optimize para el servidor de aplicaciones que estamos utilizando y que si existe un archivo anterior en la carpeta de destino que no de error, que simplemente lo reescriba.



Una vez creado el archivo WAR podemos abrirlo con cualquier herramienta que soporte archivos ZIP. Vamos a ver que en el raíz tenemos la página JSP de un proyecto y que hay dos carpetas META-INF y WEB-INF.




 En la carpeta WEB-INF tendremos el descriptor de despliegue para el servidor Apache Geronimo y la carpeta lib con todos los JAR que el proyecto necesita.







5 comentarios:

  1. Oye, a mi no me crea el archivo descriptor de despliegue, ni me agrega los archivos jar como librerias. A que puede deberse?
    Trabajo en CentOS 7, Tomcat 7, eclipse luna EE

    ResponderEliminar
  2. Ricardo, has seleccionado el tipo correcto de proyecto Java? Recomiendo el eclipse Luna edicion JEE o Java Enterprise Edition. Mira en este enlace http://www.eclipse.org/downloads/packages/release/Luna/SR2

    ResponderEliminar
  3. Excelente Jose Manuel, te felicito por este blog que es de gran ayuda para todos aquellos que estamos en el mundo de la programacion y el desarrollo de sistemas informaticos.

    ResponderEliminar
  4. Vale, y desde la terrminal de Ubuntu, ¿como se haría?
    Gracias

    ResponderEliminar