Apache Tomcat es un contenedor de servlets de Java que existe desde hace mucho tiempo. Es de código abierto e implementa las especificaciones básicas de Java Enterprise (ahora llamada Jakarta EE) como las especificaciones Jakarta Servlet, Jakarta Server Pages y Jakarta WebSocket.
¿Qué hace que Java siga siendo popular entre los desarrolladores?
Apache Software Foundation lanzó Tomcat por primera vez en 1998, solo cuatro años después de Java.
Tomcat comenzó como la implementación de referencia para la especificación de Java original con Servlet API y JavaServer Pages y sigue siendo el servidor Java de aplicaciones más popular.
¿Por qué Tomcat sigue siendo el más usado? Porque tiene un motor central que ha sido probado a lo largo de los añós, se sabe de su buen funcionamiento y ofrece buenas posibilidades de extensibilidad.
¿Tomcat es un servidor web o de aplicaciones?
El ecosistema de Java admite varios tipos de servidores de aplicaciones: Un contenedor de servlet es una forma de implementar la especificación de servlet de Jakarta, que se utiliza principalmente para alojar servlets.
Un Servidor web, como Apache, es un servidor que está hecho para servir archivos del sistema local. La especificación Jakarta EE está completamente implementada en un servidor de aplicaciones empresariales Java.
El trabajo principal de Tomcat es mantener servlets y JSP
Un servlet de Java (o Jakarta) configura puntos finales para solicitudes HTTP y las envía al código de lógica de negocios para que las maneje.
JSP o Jakarta Server Pages, es una tecnología de presentación de vistas del lado del servidor que permite definir interfaces HTML que utilizan datos del interior del servidor e información de la solicitud y la respuesta.
Como desarrollador, vas a poder escribir el servlet o la página JSP, establecer reglas para las solicitudes y respuestas y luego dejar que Tomcat se encargue del enrutamiento.
El servidor web Coyote también forma parte de Tomcat. Coyote hace posible usar el servidor web Apache y Tomcat para servir archivos estáticos.
La API de persistencia de Jakarta es parte de una versión extendida de Tomcat llamada TomEE, esa versión tiene una gama más amplia de especificaciones y características de Jakarta.
¿Cómo configurar una aplicación en Tomcat?
Pondrás tus aplicaciones en el directorio webapps de Tomcat y desde allí, puedes colocar un archivo .war y Tomcat se encargará de ejecutarlo. El archivo.war es la forma estándar de empaquetar un recurso de aplicación web.
Básicamente es un archivo Java (.jar) con algunos archivos adicionales que indican al contenedor cómo ejecutarlo.
A continuación, tienes tres formas diferentes de usar Tomcat para la implementación de archivos estáticos y aplicaciones web.
Despliegue
Se dice que una aplicación web que no ha sido comprimida en un archivo.war está “explotada”. Eso significa que todas sus partes todavía están distribuidas en directorios y archivos.
Vas a poder encontrar algunos ejemplos de cómo se hace esto, desde el propio directorio del archivo Tomcat que puedes descargar de aquí. Con una implementación ampliada, vas a poder revisar los archivos sin tener que preocuparte por cómo estén comprimidos.
De forma predeterminada, Tomcat también viene con una aplicación de administración, que puedes encontrar en la ruta /manager. Esta aplicación permite hacer muchas cosas.
Como por ejemplo: Iniciar, detener y volver a implementar aplicaciones desde una consola web.
Crear un proxy inverso
Tomcat puede servir archivos estáticos desde el disco y tiene la biblioteca APR para ayudarte a hacerlo de manera más eficiente. Sin embargo, también es común combinar Tomcat con el servidor web más popular, Apache (httpd) para servir archivos estáticos.
Tomcat y el servidor Apache se pueden usar juntos de diferentes maneras.
La primera es un “proxy inverso” en el que Apache maneja las solicitudes de archivos estáticos y envía solicitudes de otros recursos (/webapp/**) a Tomcat. Luego, el servidor Apache devolverá la respuesta al cliente.
Eso es solo un proxy, pero se llama proxy inverso para diferenciarlo del rol habitual de un proxy en el lado del cliente. La configuración del archivo de configuración de Apache facilita la configuración de un proxy inverso.
AJP (Apache JServe Protocol) facilita el manejo de encabezados similares a metadatos, esa es otra opción.
AJP también es un proxy inverso porque su arquitectura es la misma (Apache a Tomcat). Ese método elimina parte del trabajo manual, pero necesita más configuración por adelantado. Microsoft IIS se puede configurar de manera similar.
Servidor incorporado
Jetty fue el único servidor que pudo ejecutarse como servidor integrado durante mucho tiempo. Eso ya no es así y Tomcat ahora también puede ejecutarse integrado.
La idea detrás de un servidor incorporado es que en lugar de que el servidor contenga los archivos de la aplicación, como has visto hasta ahora, tienes una aplicación con una clase principal (es decir, una aplicación Java independiente) que recurre a las características del servidor desde dentro.
En general, esta es una forma más simple y portátil de crear software y se ha convertido rápidamente en la norma (por ejemplo, Spring Boot usa una instancia integrada de Tomcat que se ejecuta en modo de desarrollo).
Cuando ejecutas un servidor incorporado, solo tienes que lidiar con una parte (la aplicación) en lugar de la aplicación y la implementación del servidor. Eso puede facilitar las operaciones del lanzamiento.
Por otro lado, todavía es muy común configurar Tomcat para que se ejecute como un host independiente.