Cuando un cliente Web, como un navegador, comunica con una aplicación J2EE, lo hace a través de objetos del lado del servidor llamados componentes Web. Hay dos tipos de componentes Web: Java™ Servlets y páginas JavaServer Pages™ (JSP™). Los servlets son las clases Java que procesan dinámicamente las solicitudes y construyen las respuestas. Las páginas JSP son documentos basados en texto que ejecutan Servlets
pero permiten una forma más natural de crear contenido estático.
Aunque los Servlets y las páginas JSP pueden usarse indistintamente, cada uno tiene sus propios puntos fuertes:
- Los servlets son mejores para manejar las funciones de control de una aplicación, como despachar solicitudes, y manejar datos que no sean texto.
- Las páginas JSP son más apropiadas para generar marcas basadas en texto como HTML, SVG, WML, y XML.
Este capitulo describe los procedimientos de empaquetamiento, configuración, y despliegue de componentes Web, en Tomcat, nuestro servidor por defecto y en los servidores más comúnmente utilizados en el mundo empresarial.
Muchas características de la tecnología JSP están determinadas por la tecnología Java Servlet, por eso deberías familiarizarte con este material aunque no hayas pensado en escribir servlets.
La porción del lado del servidor de un cliente Web consta de componentes Web, ficheros de recursos estáticos como imágenes, y clases y librerías de ayuda. La plataforma J2EE proporciona muchos servicios de soporte
que mejoran las capacidades de los componentes Web y hacen más fácil su despliegue. Sin embargo, como debe tener en cuenta estos servicios, el proceso de creación y ejecución de un cliente Web es diferente de las tradicionales
clases Java independientes.
Los componentes Web se ejecutan dentro dentro un entorno llamado Contenedor Web. El contenedor Web proporciona servicios como el despacho de solicitudes, la seguridad, la concurrencia y el control del
ciclo de vida. También ofrece a los componentes Web acceso a los APIs de la plataforma J2EE como el sistema de nombres, las transacciones y el envío recepción de e-mail.
Antes de poder ser ejecutado, un cliente Web debe ser empaquetado en un archivo de aplicación Web (WAR), que es un JAR similar al paquete usado para las librerías de clases Java, y debe ser instalado (o desplegado) en un contenedor
Web.
Ciertos aspectos del comportamiento de un cliente Web se pueden configurar durante su despliegue. La información de configuración se mantiene en un fichero de texto en formato XML llamado "Descriptor de Despliegue de una Aplicación Web"
(cuyo nombre real es web.xml). Cuando se crean componentes y clientes Web usando la utilidad deploytool del J2EE SDK, automáticamente genera o actualiza el descriptor de despliegue basándose en los datos
que se introducen en los "magos" (wizards) e inspectores de deploytool. También podemos crear manualmente un descriptor de despliegue según el esquema descrito en la Especificación Java Servlet.
El proceso de crear, desplegar, y ejecutar un cliente Web se puede resumir en los siguientes pasos:
- Desarrollar el código de los componentes Web (posiblemente incluyendo un descriptor de despliegue).
- Empaquetar los componentes del cliente Web junto cualquier recurso estático (por ejemplo, imágenes) y clases de ayuda referenciadas por los componentes
- Desplegar la aplicación.
- Acceder a un URL que referencie al cliente web.
Archivos de Aplicación Web
Los clientes Web están empaquetados en archivos de aplicación Web. Además de los componentes Web, un archivo de aplicación Web normalmente contiene otros ficheros, incluyendo los siguientes:
- Clases de utilidad del lado del cliente (beans de bases de datos, tarjetas de compra, etc.). Frecuentemente estas clases cumplen la especificación de la arquitectura de componentes JavaBeans.
- Contenido Web estático (HTML, ficheros de imágenes, de sonido, etc.).
- Clases del lado del cliente (applets y clases de utilidad).
Los componentes Web y los ficheros de contenido Web estático se llaman recursos Web.
Una aplicación Web se puede ejecutar desde un fichero WAR o desde un directorio de distribución desempaquetada en el mismo formato que un WAR.
Estructura de un Directorio WAR
Un fichero WAR tiene una estructura de directorio específica. El directorio de más alto nivel de un fichero WAR o de una distribución de una aplicación sin empaquetar, es la raíz del documento de la aplicación. La raíz del
documento es donde se almacenan las páginas JSP, las clases y archivos del lado del cliente, y los recursos Web estáticos.
La raíz del documento contiene un subdirectorio llamando WEB-INF, que contiene los siguientes ficheros y directorios:
- web.xml: El descriptor de despliegue de la aplicación Web.
- Ficheros de librerías de etiquetas del descriptor.
- classes: Un directorio que contiene las clases del lado del servidor: servlets, clases de utilidad, y componentes JavaBeans.
- lib: Un directorio que contiene los archivos JAR o librerías (librerías de etiquetas y librerías de clases de utilidad llamadas por las clases del lado del servidor).
También podemos crear subdirectorios específicos de la aplicación (es decir, directorios de package) en la raíz del documento o en el directorio WEB-INF/classes.
Crear un Fichero WAR
Cuando se añade el primer componente Web a una aplicación J2EE, le herramienta deploytool crea automáticamente un nuevo fichero WAR para contener el componente.
También podemos crear manualmente un fichero WAR de tres formas diferentes:
- Con la herramienta packager distribuida con el J2EE SDK.
- Con la tarea war de la herramienta portable ant.
- Con la herramienta JAR distribuida con el J2SE SDK. Si se ha distribuido el directorio de desarrollo de la aplicación en la estructura requerida por el formato WAR, se puede crear un fichero de aplicación
Web en el formato requerido. Simplemente ejecutamos el siguiente comando en el directorio de más alto nivel de la aplicación:
jar cvf archiveName.war .