¿Cómo crear una aplicación web en Apache Tomcat?

Explorando Apache Tomcat: Versiones y Despliegue

02/03/2022

Valoración: 4.7 (11803 votos)

En el vasto y dinámico mundo del desarrollo de aplicaciones web, Apache Tomcat se erige como una solución robusta y ampliamente adoptada para el despliegue de aplicaciones Java. Conocido por su fiabilidad, rendimiento y, sobre todo, por ser una herramienta de código abierto, Tomcat ha facilitado la creación y ejecución de innumerables servicios y plataformas en la web. Este artículo profundiza en las particularidades de este servidor de aplicaciones, abordando sus diversas versiones, las tecnologías que soporta y, de manera crucial, cómo se gestiona el despliegue de aplicaciones, ya sean servicios RESTful o basados en JAX-WS.

¿Cuál es la versión de Apache Tomcat?
Nuestro servicio lo desplegaremos en un servidor Apache Tomcat en su versión 8 que podremos descargar del enlace ( apache-tomcat ), usaremos la librería Jersey en su versión 2.14 la cual implementa JAX-RS2.0 que podemos descargar en ( Librería Jersey ).

La adopción de software de código abierto como Apache Tomcat ha ganado un impulso considerable, especialmente en un entorno donde las empresas buscan optimizar sus costes sin comprometer la calidad. Donde antes predominaban soluciones de pago, ahora se busca la eficiencia y la flexibilidad que ofrecen las alternativas gratuitas y de código abierto. Tomcat, en particular, se ha convertido en la elección preferida para aquellas aplicaciones Java que no requieren la complejidad de una pila Enterprise completa, ofreciendo un equilibrio perfecto entre funcionalidad y ligereza.

Índice de Contenido

Entendiendo Apache Tomcat: Un Contenedor Esencial

Apache Tomcat es mucho más que un simple servidor web; es una implementación de las especificaciones Java Servlet y JavaServer Pages (JSP) de la Apache Software Foundation. Esto significa que actúa como un 'contenedor' donde las aplicaciones Java diseñadas con estas tecnologías pueden ejecutarse y responder a las peticiones de los usuarios. Su naturaleza de código abierto lo hace accesible y personalizable, permitiendo a desarrolladores de todo el mundo contribuir a su mejora continua.

Además de ser un contenedor de Servlets y JSP, Tomcat soporta otras tecnologías clave del ecosistema Java, lo que lo convierte en una plataforma versátil para el desarrollo web. Su capacidad para manejar peticiones HTTP y retornar respuestas en diversos formatos (XML, JSON, HTML, texto plano) lo hace ideal para la implementación de servicios web modernos y eficientes.

Las Versiones de Apache Tomcat: Una Evolución Constante

A lo largo de los años, Apache Tomcat ha evolucionado, lanzando diversas versiones que incorporan mejoras, nuevas características y soporte para las últimas especificaciones de Java. Comprender las versiones es crucial para asegurar la compatibilidad con el entorno de desarrollo y las aplicaciones que se desean desplegar.

La información proporcionada menciona varias versiones específicas de Tomcat, cada una con sus propios requisitos y capacidades:

  • Apache Tomcat 6.x (ej. 6.0.37): Esta versión, aunque más antigua, sigue siendo relevante en muchos entornos productivos. Soporta las especificaciones Servlet 2.5 y JSP 2.1, y requiere una Máquina Virtual Java (JVM) versión 1.5 o superior. Es una opción probada para aplicaciones que no necesitan las características más recientes de Java EE.
  • Apache Tomcat 8: Mencionada en el contexto de desarrollo de servicios web RESTful con Jersey 2 (implementación de JAX-RS2.0). Implica el uso de una versión de Java compatible con estas librerías.
  • Apache Tomcat 9.0.34: Una versión más reciente, que soporta tecnologías avanzadas como HTTP/2, OpenSSL para JSSE y alojamiento virtual TLS. Para esta versión, se recomienda Java OpenJDK 11, lo que la alinea con las últimas tendencias en el desarrollo Java.

Esta evolución asegura que Tomcat pueda adaptarse a las necesidades cambiantes del desarrollo web, desde aplicaciones legadas hasta las más modernas, aprovechando las capacidades de las últimas versiones de Java.

Tabla Comparativa de Versiones Mencionadas

Versión de TomcatRequisitos JavaEspecificaciones Clave Soportadas
Apache Tomcat 6.0.37Java 1.5 o superiorServlet 2.5, JSP 2.1
Apache Tomcat 8Compatible con JAX-RS2.0 / Jersey 2.14Servicios RESTful
Apache Tomcat 9.0.34OpenJDK 11HTTP/2, OpenSSL para JSSE, Alojamiento Virtual TLS

Despliegue de Aplicaciones Web en Apache Tomcat

El despliegue de aplicaciones en Tomcat es un proceso fundamental para hacer que un servicio o sitio web esté disponible. Ya sea un servicio RESTful o una aplicación JAX-WS, el proceso implica la correcta estructuración de archivos y la configuración del servidor.

Estructura de Carpetas para el Despliegue

Para que Tomcat reconozca y ejecute una aplicación, esta debe seguir una estructura de directorios específica dentro del directorio webapps de Tomcat. Por ejemplo, para un servicio RESTful, la estructura podría ser:

C:/servidor/webapps/RESTful/
├── WEB-INF/
│ ├── lib/ (*.jar de librerías, ej. Jersey)
│ ├── classes/ (Clases compiladas, ej. .class de servicios)
│ └── web.xml (Descriptor de despliegue)
  • webapps: Es el directorio por defecto donde se publican las aplicaciones. Cada subdirectorio dentro de webapps representa una aplicación web diferente.
  • WEB-INF: Contiene los recursos privados de la aplicación que no son accesibles directamente desde el cliente, como el archivo web.xml, las librerías (lib) y las clases compiladas (classes).
  • lib: Aquí se colocan todas las librerías externas (archivos .jar) que la aplicación necesita para funcionar, como las de Jersey para servicios RESTful o JAX-WS.
  • classes: Contiene los archivos .class compilados de la aplicación, organizados según su estructura de paquetes.
  • web.xml: El descriptor de despliegue principal de la aplicación web. Es un archivo XML que configura los servlets, los filtros, los listeners y otros componentes de la aplicación.

Despliegue de un Servicio Web RESTful

Para un servicio RESTful, como el ejemplo de 'Hola Mundo' con Jersey y JAX-RS, el proceso de despliegue manual implica varios pasos:

  1. Descargar Tomcat y Jersey: Obtener las versiones necesarias de Apache Tomcat (ej. v8) y la librería Jersey (ej. v2.14).
  2. Configurar la Estructura de Directorios: Crear la estructura de carpetas mencionada anteriormente dentro de C:/servidor/webapps/.
  3. Copiar Librerías: Mover todos los archivos .jar de Jersey a la carpeta WEB-INF/lib.
  4. Crear el Código del Servicio: Desarrollar el archivo Java del servicio (ej. WebService.java) en la estructura de paquetes correspondiente dentro de WEB-INF/classes. Este archivo define los puntos finales (@Path), los métodos HTTP (@GET, @POST, etc.) y los tipos de respuesta (@Produces).
  5. Compilar el Servicio: Utilizar el comando javac desde la consola, asegurándose de incluir el classpath a las librerías de Jersey. Esto generará el archivo .class.
  6. Configurar web.xml: Este archivo es crucial. Para Jersey, se debe configurar un ServletContainer de Jersey, especificando el paquete donde se encuentran los servicios. La etiqueta <url-pattern> define la ruta base para invocar el servicio.
  7. Iniciar Tomcat: Ejecutar el script startup.bat (Windows) o startup.sh (Linux) desde el directorio bin de Tomcat.
  8. Probar el Servicio: Acceder al servicio a través de un navegador o una herramienta de prueba, usando la URL configurada (ej. http://localhost:8080/RESTful/getMessage/xml/).

Despliegue de Servicios Web JAX-WS

Para aplicaciones con servicios web JAX-WS, el proceso tiene similitudes pero también particularidades, especialmente si se utiliza una herramienta como Maven para la gestión del proyecto:

  1. Requisitos Previos: Asegurarse de tener una JVM compatible (ej. Jrockit-jdk1.6.0_45-R28.2.7-4.1.0 o HotSpot 1.6) que incorpore la versión adecuada de JAX-WS RI (ej. 2.1.6).
  2. Instalación Básica de Tomcat: Descomprimir el servidor en un directorio (${TOMCAT_HOME}) y configurar usuarios administradores en ${TOMCAT_HOME}/conf/tomcat-users.xml para acceder a la aplicación de despliegue.
  3. Creación de la Aplicación con Maven: Utilizar Maven para crear un proyecto web (ej. maven-archetype-webapp). Configurar los plugins maven-war-plugin (para generar el WAR y copiarlo al directorio de despliegue de Tomcat) y maven-clean-plugin.
  4. Añadir Dependencias JAX-WS: Incluir la dependencia jaxws-rt (ej. v2.1.7) en el archivo pom.xml del proyecto.
  5. Crear el Servicio Web: Definir el servicio Java con anotaciones JAX-WS (@WebService, @WebMethod, @WebParam).
  6. Configuración de web.xml para JAX-WS: Para que Tomcat publique los servicios JAX-WS, se debe configurar un servlet específico, com.sun.xml.ws.transport.http.servlet.WSServlet, y un listener, com.sun.xml.ws.transport.http.servlet.WSServletContextListener. Este listener es el encargado de parsear el archivo sun-jaxws.xml.
  7. Crear sun-jaxws.xml: Este archivo, ubicado en WEB-INF/, contiene la configuración de los endpoints de los servicios web, mapeando el nombre del servicio a su implementación y su patrón de URL.
  8. Desplegar y Probar: Ejecutar mvn install. Si el maven-war-plugin está configurado correctamente, la aplicación se desplegará automáticamente en el directorio webapps de Tomcat. Luego, se puede acceder a la URI del servicio web para verificar su publicación y probarlo con herramientas como SOAPUi.

Consideraciones sobre la Ubicación de Aplicaciones Publicadas

Una vez que una aplicación es publicada en Tomcat, ya sea manualmente o a través de herramientas como Maven, reside en el directorio ${TOMCAT_HOME}/webapps/. Cada aplicación se encuentra en un subdirectorio con su propio nombre (ej. RESTful o ExampleWS). Cuando Tomcat se inicia, escanea este directorio y despliega las aplicaciones que encuentra. La URL para acceder a una aplicación típicamente sigue el patrón http://localhost:8080/NombreDeLaAplicacion/, seguido de la ruta específica del servlet o servicio.

¿Dónde se encuentra la aplicación publicada en Tomcat?
En el deployer de tomcat se verá la aplicación correctamente publicada. Una vez que todo está creado, se ejecuta mvm install. Si la compilación es correcta, ésta ejecución debería dejar en el directorio de despliegue de tomcat la aplicación correctamente publicada.

Tecnologías de Servidor Java Soportadas por Tomcat

La versatilidad de Apache Tomcat se debe en gran medida a su soporte para una variedad de tecnologías de servidor Java. Esto lo convierte en una plataforma robusta para diferentes tipos de aplicaciones web:

  • Java Servlets: Componentes Java que extienden las capacidades de un servidor, permitiendo manejar peticiones HTTP y generar respuestas dinámicas. Tomcat es un contenedor de Servlets por excelencia.
  • JavaServer Pages (JSP): Tecnología que permite a los desarrolladores insertar código Java directamente en páginas HTML, facilitando la creación de contenido dinámico.
  • Java Expression Language (EL): Un lenguaje simple utilizado en JSP para acceder a datos y objetos.
  • Java WebSocket: Tecnología que permite la comunicación bidireccional en tiempo real entre un cliente y un servidor a través de una única conexión TCP.
  • HTTP/2: La versión más reciente del protocolo HTTP, que ofrece mejoras significativas en rendimiento y eficiencia.
  • OpenSSL para JSSE: Proporciona soporte para Secure Sockets Layer (SSL) y Transport Layer Security (TLS), asegurando comunicaciones seguras.
  • Alojamiento Virtual TLS: Permite alojar múltiples sitios web seguros en un solo servidor IP, cada uno con su propio certificado SSL/TLS.

Esta gama de soporte tecnológico subraya la capacidad de Tomcat para servir como una base sólida para el desarrollo de aplicaciones web modernas y seguras.

Preguntas Frecuentes sobre Apache Tomcat

¿Cómo crear una aplicación web en Apache Tomcat?

Crear una aplicación web en Apache Tomcat implica desarrollar el código Java (Servlets, JSPs, servicios RESTful o JAX-WS), estructurarlo correctamente en un directorio (típicamente siguiendo el estándar WAR), y luego desplegarlo en el directorio webapps de Tomcat. Puedes crear un proyecto web dinámico en un IDE como Eclipse o usar una herramienta de construcción como Maven, configurando el tiempo de ejecución de destino a tu versión de Apache Tomcat.

¿Dónde se encuentra la aplicación publicada en Tomcat?

Las aplicaciones publicadas en Apache Tomcat se encuentran físicamente en el directorio ${TOMCAT_HOME}/webapps/. Cada aplicación se despliega como un subdirectorio dentro de webapps (si se despliega como un directorio expandido) o como un archivo .war (Web Application Archive) que Tomcat descomprime automáticamente. Por ejemplo, si tu aplicación se llama MiApp, la encontrarás en ${TOMCAT_HOME}/webapps/MiApp/.

¿Cómo configurar usuarios y roles en Tomcat?

Los usuarios y sus roles en Tomcat se configuran en el archivo ${TOMCAT_HOME}/conf/tomcat-users.xml. Dentro de este archivo, se definen los roles (ej. manager, admin) y luego se crean los usuarios, asignándoles uno o varios de estos roles. Por ejemplo:
<role rolename="manager-gui"/>
<user username="tu_usuario" password="tu_contraseña" roles="manager-gui,admin-gui"/>
Esto es esencial para acceder a las interfaces de administración de Tomcat como el Manager App o Host Manager.

¿Es Apache Tomcat adecuado para aplicaciones de gran escala?

Sí, Apache Tomcat es capaz de manejar aplicaciones de gran escala y alto rendimiento, especialmente cuando se configura y optimiza adecuadamente. Es utilizado en entornos de producción de alto tráfico en muchas organizaciones. Sin embargo, para aplicaciones que requieren funcionalidades avanzadas de Java EE (como EJB, JMS, JTA), un servidor de aplicaciones completo como WildFly o GlassFish podría ser más apropiado. Para la mayoría de las aplicaciones web basadas en Servlets, JSP, RESTful o JAX-WS, Tomcat es una opción excelente y escalable.

Conclusión

Apache Tomcat se mantiene como una piedra angular en el desarrollo de aplicaciones web Java, ofreciendo una solución de código abierto, flexible y potente para desplegar y gestionar servicios web. Desde sus versiones más antiguas que aún dan servicio en entornos críticos hasta las más recientes que abrazan las últimas innovaciones tecnológicas, Tomcat demuestra su capacidad de adaptación y relevancia. La facilidad de su instalación, la claridad en la estructura de despliegue y el amplio soporte a tecnologías Java lo convierten en una herramienta indispensable para cualquier desarrollador que busque eficiencia y control en sus proyectos. Comprender a fondo sus capacidades y procesos de despliegue es un paso crucial para dominar el arte de construir aplicaciones web robustas y escalables.

Si quieres conocer otros artículos parecidos a Explorando Apache Tomcat: Versiones y Despliegue puedes visitar la categoría Librerías.

Subir