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.







posted under , , |

5 comentarios:

Mat. Tania Vieyra dijo...

excelente artículo

Ricardo Oscos dijo...

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

Jose Manuel Ayala Wilson dijo...

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

Argenis Martínez dijo...

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.

Unknown dijo...

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

Publicar un comentario

Entrada más reciente Entrada antigua Inicio