UC3M Depto. de Ingeniería Telemática
Laboratorio de Aplicaciones Telemáticas

Instalación de Tomcat / Servlets (I)


Tabla de contenidos

1. Instalación de Apache Tomcat
2. Servlet Hola Mundo
2.1. Apartado 1: compilar el servlet
2.2. Apartado 2: desplegar el servlet en Tomcat
2.3. Apartado 3: ejecutar el servlet
3. Obtener información del servlet
4. Visualización de recursos estáticos
5. Procesar parámetros de la petición HTTP
6. Desarrollo de aplicaciones Web con Eclipse
7. Referencias
7.1. Estándares
7.2. Servlets y Tomcat

1. Instalación de Apache Tomcat

El servidor Apache Tomcat es una implementación de referencia de las tecnologías Java Servlet y JavaServer Pages (JSP). Antes de comenzar la práctica de hoy, tendréis que instalar el servidor Tomcat en vuestras cuentas. Para ello debéis seguir los siguientes pasos:

  1. Descargar el fichero apache-tomcat-6.0.20.tar.gz al directorio temporal (/tmp). Este fichero también está disponible para descarga en el sitio Web de descargas de Apache Tomcat 6.x.

  2. Extraer los ficheros de Tomcat en algún directorio de vuestra cuenta. Para ello, una vez situados en el directorio, ejecutad el comando:

    tar xvzf /tmp/apache-tomcat-6.0.20.tar.gz
    
  3. Establecer la variable de entorno CATALINA_HOME para que apunte al directorio donde hemos instalado nuestro servidor Tomcat.

  4. Establecer la variable de entorno JAVA_HOME para que apunte al directorio donde está instalado Java 1.6 (en el laboratorio es /usr/dist/jdk1.6.0_03).

  5. Anteponer el directorio ${JAVA_HOME}/bin a la variable de entorno PATH.

Ahora ya podemos ejecutar el servidor Tomcat y empezar a probar nuestros primeros servlets. Para arrancar y detener el Tomcat sigue las siguientes instrucciones:

  1. El script de arranque se encuentra en el directorio bin de la instalación del Tomcat. En este directorio, ejecutad en el terminal de línea de comandos: ./startup.sh Nota: el directorio actual en el momento de arrancarlo debe ser ${CATALINA_HOME}/bin.

  2. Para detener el servidor se debe ejecutar el siguiente comando en la shell desde el mismo directorio: ./shutdown.sh

  3. Para comprobar que la instalación ha sido satisfactoria, arrancad el servidor Tomcat y desde un navegador y conectaos a la URL: http://localhost:8080. Si se puede ver la página principal de Tomcat, la instalación ha sido correcta.

Nota

Si el servidor no arranca, una de las causas posibles es que algunos de los puertos en que escucha conexiones por defecto (8080 y 8005) esté ocupado por otro proceso. Si examinas las últimas líneas del fichero ${CATALINA_HOME}/logs/catalina.out sabrás si es este el problema. En este caso, cambia estos puertos en el fichero de configuración ${CATALINA_HOME}/conf/server.xml. Pon, por ejemplo, 9090 y 9005. Recuerda que la nueva URI de acceso al servidor cambiaría en este caso a http://localhost:9090.

Nota

Cuando hayas estado trabajando con Tomcat y vayas a cerrar tu sesión en el ordenador, recuerda comprobar que dejas Tomcat parado. Si no, supondrá una molestia para usuarios que utilicen el mismo ordenador más tarde.

2. Servlet Hola Mundo

El objetivo de este ejercicio es aprender a compilar, desplegar y ejecutar un servlet sencillo.

2.1. Apartado 1: compilar el servlet

Descarga el código del servlet HolaMundo.java. Para compilar este servlet, debes incluir en la variable de entorno CLASSPATH la ruta al API de servlet, así como el directorio actual. Esta API es necesaria para compilar un servlet, y está disponible en vuestra instalación de Tomcat: lib/servlet-api.jar. Una opción alternativa es compilar con la opción -classpath, por ejemplo:

javac -classpath ${CATALINA_HOME}/lib/servlet-api.jar:. HolaMundo.java
      

Nota

Recuerda utilizar Java 1.6 para compilar.

2.2. Apartado 2: desplegar el servlet en Tomcat

Desplegar un servlet consiste en incluir una serie de ficheros en un contenedor web (en nuestro caso, Tomcat) para que los clientes puedan acceder a su funcionalidad. Normalmente, el desarrollo de un servlet forma parte de lo que se denomina una aplicación Web, que no es más que una colección de servlets, páginas HTML, JSP, clases y otros recursos que se pueden empaquetar y ejecutar en distintos contenedores web, de distintos vendedores, y que ofrecen una determinada funcionalidad a la que los clientes acceden típicamente a través de un navegador.

Las aplicaciones Web, a partir de la especificación de Servlet 2.2, deben estructurarse según la siguiente jerarquía de subdirectorios:

  • Directorio raíz: puedes publicar ficheros estáticos (HTML, imágenes, hojas de estilo, etc.) y JSPs.

    • Directorio WEB-INF: debe contener un fichero web.xml. Este fichero configura la aplicación. Por ejemplo, permite declarar servlets, asignarles parámetros de inicio, declarar alias y filtros, etc.

      • Directorio classes: debe contener los ficheros compilados (servlets, beans, etc.) de las clases utilizadas por la aplicación web.

      • Directorio lib: debe contener otras bibliotecas de clases adicionales (comprimidas con jar) que utilice tu aplicación.

    • Resto de subdirectorios: para ficheros estáticos y JSP.

Para exportar aplicaciones web a otros servidores, puedes comprimir esta estructura de directorios, utilizando jar, dando lugar así a un fichero WAR (almacénalo con extensión war, por ejemplo holamundo.war). Este fichero es compatible con cualquier plataforma de ejecución de servlets y JSP.

Para desplegar nuestro servlet de ejemplo:

  1. Crea un contexto para nuestra aplicación web, denominado holamundo. Crear un contexto en Tomcat no es más que crear un directorio debajo de ${CATALINA_HOME}/webapps/. Este directorio será el directorio raíz de nuestra aplicación web y, por lo tanto, debajo de él debemos crear la estructura de subdirectorios indicada anteriormente.

    El nombre del contexto es el primer nivel de la jerarquía de la ruta de acceso a nuestra aplicación, que en este caso será:

    http://localhost:8080/holamundo/
    
  2. Descarga el fichero de despliegue web.xml.

  3. Sitúa correctamente los ficheros en la estructura de directorios creada:

        ${CATALINA_HOME}/webapps +-- holamundo +-- WEB-INF +-- web.xml
                                                           +-- classes +-- HolaMundo.class
    

2.3. Apartado 3: ejecutar el servlet

Abre un navegador y conéctate a la URL http://localhost:8080/holamundo/hola. Esto hara que se ejecute nuestro servlet de ejemplo y se mostrará la página XHTML con el mensaje ¡Hola Mundo!

Nota

En esta versión de tomcat, en caso de no existir el fichero index.html, se mostrará una página indicando que el contexto no existe.

3. Obtener información del servlet

Modifica el servlet del ejercicio anterior para que muestre la siguiente información: dirección IP del cliente, contenido de la cabecera User-Agent del mensaje HTTP de petición recibido y fecha y hora del servidor.

Nota

Si modificas una clase mientras el servidor Tomcat está en ejecución, este seguirá ejecutando la versión antigua de la clase. Mientras se desarrolla una aplicación Web, es habitual configurar Tomcat para que detecte y cargue versiones nuevas de las clases mientras está en ejecución. Para cada contexto (aplicación Web) en que desees este comportamiento, establece valor true en la propiedad reloadable. Para ello, crea un subdirectorio llamado META-INF en el directorio principal de tu aplicación Web, y crea en él un fichero llamado context.xml con el siguiente contenido:

<Context reloadable="true"></Context>

4. Visualización de recursos estáticos

El objetivo de este ejercicio es aprender a mostrar recursos estáticos en el servidor Web Tomcat. Un recurso estático es un fichero, almacenado en el sistema de ficheros del servidor, cuyo contenido devuelve el servidor Web cuando un cliente envía una petición GET con la URL del recurso. Se diferencia de los recursos dinámicos en que estos últimos son generados dinámicamente por un programa que se ejecuta en el servidor cuando llega la petición. Algunos recursos estáticos típicos son las imágenes, hojas de estilo CSS y páginas (X)HTML estáticas (aquellas no generadas por programas dinámicamente).

Descarga los siguientes recursos estáticos que se proporcionan: pagina.html y tomcat.gif. Sitúalos en la estructura de la aplicación Web:

    ${CATALINA_HOME}/webapps +-- holamundo +-- WEB-INF +-- web.xml
                                           |           +-- classes +-- HolaMundo.class
                                           +-- pagina.html
                                           |
                                           +-- tomcat.gif

Abre un navegador y conéctate a la URL http://localhost:8080/holamundo/pagina.html

5. Procesar parámetros de la petición HTTP

Programa un formulario XHTML 1.1 en el que se le solicite al usuario mediante un formulario su nombre, primer y segundo apellido y dirección.

Escribe un servlet que muestre un resumen de la información enviada por dicho formulario.

Declara el nuevo servlet en el fichero WEB-INF/web.xml para poder acceder a él. Asóciale una URL. Para ello añade un nuevo elemento <servlet> y <servlet-mapping>. Puedes tomar como referencia la declaración de los servlets de ejercicios anteriores. Asegúrate de que el formulario envíe los datos a la URL de este servlet.

Abre un navegador y comprueba que el servlet funcione correctamente.

6. Desarrollo de aplicaciones Web con Eclipse

Eclipse cuenta con un módulo opcional, llamado WTP (Web Toolkit Platform), que facilita el desarrollo de aplicaciones Web. Entre otras cosas, es capaz de ejecutar y depurar servlets en un servidor Web como Tomcat.

El módulo WTP no se incorpora por defecto en la distribución normal de Eclipse. Sin embargo, puede ser instalado desde su menú "Help / Software Updates/ Find & Install". En la página Web de descargas de WTP también se puede descargar un instalable "todo en uno" que integra directamente Eclipse y WTP.

A continuación se muestran algunos enlaces en que se puede encontrar más información acerca de WTP:

7. Referencias

Los siguientes enlaces pueden ser útiles para realizar la práctica:

7.2. Servlets y Tomcat

Tomcat incluye ejemplos de Servlets y JSPs encapsulados en la aplicación Web examples. Están accesibles en el directorio webapps/examples de la instalación de Tomcat, y a través de un navegador Web si Tomcat está en ejecución (http://localhost:8080/examples/).


© Carlos III University of Madrid, Spain