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).
- <?xml version="1.0" encoding="UTF-8"?>
- <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">
- <display-name>EjemploWar</display-name>
- <welcome-file-list>
- <welcome-file>EjemploWar.jsp</welcome-file>
- </welcome-file-list>
- </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:
- <?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">
- <dep:environment>
- <dep:moduleId>
- <dep:groupId>default</dep:groupId>
- <dep:artifactId>EjemploWar</dep:artifactId>
- <dep:version>1.0</dep:version>
- <dep:type>car</dep:type>
- </dep:moduleId>
- </dep:environment>
- <web:context-root>/EjemploWar</web:context-root>
- </web:web-app>
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:
excelente artículo
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
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
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.
Vale, y desde la terrminal de Ubuntu, ¿como se haría?
Gracias
Publicar un comentario