Programación de Sistemas.

Generación de páginas en forma dinámica utilizando Apache Tomcat®.   Jakarta Tomcat

Trabajo realizado por Luis Baez y Luis Ehlen para el ramo de Programación de Sistemas, segundo semestre de 2003. Profesor Agustín González

Presentación.ppt


Introducción

El proyecto Jakarta créa y mantiene soluciones de código abierto basadas en Java, sin costo alguno, uno de sus desarrollos es Tomcat.
El servidor Jakarta-Tomcat, es uno de los proyectos de código abierto liderado por la Apache Software Foundation. El servidor Tomcat es una aplicación web basada en Java creada para ejecutar servlets y páginas JSP, siendo la implementación oficial de referencia de las especificaciones Servlet 2.3 y JavaServer Pages 1.2.

Antes de continuar, es necesario tener un conocimiento básico del concepto de Aplicación Web, que fue introducido en la versión 2.2 de la especificación servlet. De acuerdo con esta especificación, una aplicación web es una colección de servlets, páginas JSP, clases Java, archivos de descripción de la aplicación, documentos estáticos: HTML, XHTML, imágenes, etc. y otros recursos que pueden ser empaquetados y ejecutados en distintos servidores de diferentes proveedores. Es decir, una aplicación web se podría definir como la capa web de cualquier aplicación.


Instalación

Tomcat funciona bajo Java Development Kit. Primero usted debe tener o bajar e instalar algún JDK (http://java.sun.com/j2se/)
Luego será necesario que baje alguna distribución de Jakarta-Tomcat (http://jakarta.apache.org/tomcat).
Existen tres formas de instalar Tomcat:

El uso de las herramientas ANT y CVS no será abordado en esta ocasión, pero podemos decir que ambas son herramientas para descargar y compilar las versiones de código fuente de Tomcat.

En esta ocasión mostraremos como instalar la versión binaria para Linux.

Primero es necesario comprobar que la variable de ambiente JAVA_HOME esté definida y apunte al directorio de instalación del JDK.
Esta variable se puede difinir en el archivo /etc/profile con los siguintes comandos para Bash.

  JAVA_HOME=/opt/jdk1.3
  export JAVA_HOME

Una vez configurado el JDK, se extrae Tomcat desde el archivo que se descargó hacia un directorio, por ejemplo /usr/local/jakarta-tomcat-xxx.

Con esto se concluye la instalación de Tomcat en Linux. Para comprobar que todo está correcto, se puede levantar y bajar Tomcat, para lo cual se utilizan los comandos siguientes:

TOMCAT_HOME/bin/startup.sh
TOMCAT_HOME/bin/shutdown.sh

Entiéndase como TOMCAT_HOME la ruta donde esta instalado Tomcat (en nuestro caso /usr/local/jakarta-tomcat-xxx). Luego de subir el servidor (y antes de bajarlo) podemos ver en un navegador, por primera vez la pagina de inicio de Tomcat en la dirección http://localhost:8080

Ejecutando Tomcat por primera vez.

En la página de inicio de nuestro servidor es posible acceder documentación de Tomcat, así como también es posible acceder a las aplicaciones de ejemplo, administración y manejo de Tomcat.



Funcionamiento

Ahora, para acceder a las aplicaciones de adminitración y manejo de Tomcat debemos agregar un usuario de tipo "admin" y/o de tipo "manager" en el archivo de configuración TOMCAT_HOME/conf/tomcat-users.xml, aquí un ejemplo.

Luego debemos reiniciar Tomcat para que los cambios tengan efecto.
De esta manera estamos en condiciones de comenzar a utilizar la aplicaión de manejo de Tomcat (Manager), primero se debe ingresar con el nombre y la contraseña definidos para el rol "manager", una vez dentro podemos encontrar información de las aplicaciones que se alojan en el servidor junto con la posibilidad de recargarlas, bajarlas, levantarlas o removerlas. Además es posible realizar el Deployment de una nueva aplicación ya sea subiéndola en forma de un archivo WAR (Web ARchive) o indicando una dirección dentro del mismo servidor.

Por otro lado existe la aplicación de adminitrador, la que permite manejar las variables de entorno del servidor y de sus aplicaciones. En una primera vista podemos encontrar el manejo de los usuarios y los recursos del servidor (conexión a bases de datos, sesiones para el manejo de mails y variables de entorno). Luego dentro de la configuración del servidor (Tomcat-Standalone) encontramos la vista de los distintos conectores, loggers y dentro de la sección Host podemos encontrar la configuración de las aplicaciones residentes en el servidor.

Tomcat estructura sus directorios de la siguiente manera:


Deployment

El deployment de una aplicación consiste en cómo organizar los archivos y los directorios de manera de que Tomcat sepa donde encotrar lo que necesita para realizar sus funciones correctamente.

Una aplicación Web esta definida como una organización de archivos y directorios en un orden preestablecido. Esta organización de archivos puede ser accesada en su forma "natural" donde cada directorio y archivo existe en forma separada, o en su forma "comprimida" (WAR) donde todo la organización esta comprimida en un solo archivo, (esto se puede lograr via JAR). La forma "natural" es preferida durante el desarrollo de una aplicación, mientras que la forma comprimida se prefiere para distribuir una versión final a los distintos servidores.

El directorio base de su organización de archivos es también la carpeta raíz de su aplicación. Aquí es donde deben ir los archivos html y jsp, también pueden ir directorios que contengan de manera mas ordenada este mismo tipo de archivos. Los archivos con clases java o servlet deben ir en directorios separados de la siguiente manera:

El archivo web.xml contiene la configuración de la aplicación web y define todo lo que la aplicación requiera saber sobre el servidor sobre el cual esta corriendo. Su sintáxis puede ser consultada en el capitulo 13 de las especificaciones de API Servlet. La idea es que éste archivo pueda ser provisto por alguna aplicación encargada del deployment.

Aquí se puede ver el archivo web.xml de la aplicación test.

Ademas puede consultar el directorio WEB-INF

Existen varias formas de realizar el deployment de una aplicación en Tomcat:

Copiar la aplicación en su forma "natural" (unpacked) al directorio TOMCAT_HOME/webapps/. Tomcat asignará un Context a su aplicación basado en el nombre del subdirectorio escogido. Esta técnica es la manera mas rápida y cómoda para crear el archivo web.xml. Debe reiniciar Tomcat para subir su aplicación.

Copie su aplicación en forma de WAR dentro del directorio TOMCAT_HOME/webapps/. Cuando Tomcat se inicie el automáticamente descomprimirá su aplicación y la ejecutará. Este método es usado típicamente para instalar aplicaciones adicionales.

Usando el manejador de Tomcat (Manager) para realizar el deployment de su aplicación sin necesidad de reiniciar Tomcat y de manera remota.

Agregar un Context en el archivo TOMCAT_HOME/conf/server.xml directamente o desde la aplicación "Tomcat Administrator", donde se puede definir el lugar donde reside la aplicación y las propiedades con las que contará. Esto equivale a realizar el trabajo "a mano". Luego es necesario reiniciar Tomcat para poder ver los cambios.


Ejemplos

Enviar datos a la pagina.  (Codigo fuente de la pagina.)
Ejemplo de pagina dinamica.  (Codigo fuente de la pagina.)
Enviar Mail usando un Servlet.  (Codigo fuente de la pagina  y el servlet).

Enviar Datos a Página

La aplicación permite enviar un mensaje a través de un método get o post . La información es recibida por la página dinámica.

Pagina Dinámica

Página JSP que despliega la información enviada por la página de envío de datos. Además contiene información (IP, puerto) del servidor Tomcat y del host remoto (máquina cliente), junto con obtener información del browser utilizado.

Envío de Mail usando Servlet

En ésta página se puede enviar un correo electrónico utilizando javax.mail. Durante el envío se verifica las direcciones de correo, y arroja un error en caso de ser no válidas.

Se pueden ver los Servlet's creados por Tomcat a partir de las páginas jsp existentes en la carpeta TOMCAT_HOME/work/Standalone/localhost/test

Aquí se puede ver el archivo web.xml de la aplicación test. que permite setear el mail del autor

<a href="mailto:<%=getServletContext().getInitParameter("e-mail")%>">
<%=getServletContext().getInitParameter("e-mail")%></a>


Conclusiones

Una vez instalado el Tomcat, para añadir nuevos servlets sólo se tiene que crear la estructura de directorios explicada y subirla al servidor (ya sea en forma manual, reiniciando el servidor Tomcat o mediante el manager). Usar el manager puede parecer más inseguro que subir a mano, pero para desarrollar un servlet medianamente complicado se hace casi imprescindible.

Se han dejado varias cosas en el tintero. El uso de los archivos WAR, que no son más que la anterior estructura de directorios, pero en forma comprimida (son el equivalente en servlets a los archivos JAR normales), no se abarcó el uso de herramientas para el Deployment. La posibilidad de hacer que todas las peticiones al Apache se redirijan a Tomcat. Tampoco se comentó el sistema de hosts virtuales del Tomcat, o los sistemas de seguridad adicionales.


Referencias

Páginas con documentracion interesante.