martes, 8 de junio de 2010

Estructura de un WAR. Web Applications y Web Archives


¿Qué es un WAR?

WAR es el acrónimo de Web ARchive. Es una especificación que nos dice cómo hay que empaquetar una Aplicación Web para que pueda ser ejecutada por los servidores de aplicaciones. Y una Aplicación Web es el conjunto de los recursos que son necesarios para que el servidor de aplicaciones haga lo que queremos que haga. En esta colección se incluyen las páginas HTML, JSP, imágenes, clases java, librerías, applets... todo lo que necesita nuestra aplicación.

Estructura del WAR

Para que una Aplicación Web sea portable, necesitamos como mínimo que los servidores que la ejecuten encuentren todo lo necesario para que funcione, y esto sólo lo podemos conseguir si todos los servidores buscan las cosas en el mismo sitio. Hay cuatro tipos de archivos que los servidores van a buscar:
- Clases java
- Librerías
- Recursos html
- Un archivo especial, el descriptor del despliegue (Deployment Descriptor) de la aplicación

Cada uno de estos tipos de archivo tiene su sitio en el archivo WAR:
/WEB-INF/classes contiene las clases java
/WEB-INF/lib contiene las librerías java
/WEB-INF/web.xml es el descriptor de despliegue
...y el resto de recursos (html, jsp, imágenes, etrc) se ubican en el raíz. No hay una estructura definida para estos archivos. Podemos ubicar estos archivos como queramos, aunque un poco de organización no viene mal. Pero esto entra en el terreno de las buenas prácticas más que en el de la especificación de los archivos WAR. Como curiosidad, el class loader de la aplicación debería devolver un NOT FOUND cuando intentemos buscar un recurso web en el directorio WEB-INF.

En la próxima entrada veremos el deployment descriptor (web.xml) con más detalle.



No hay comentarios:

Publicar un comentario