Biblioteca Online : ¡La Suscripción ENI por 9,90 € el primer mes!, con el código PRIMER9. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Jakarta EE
  3. Desplegar aplicaciones en Tomcat
Extrait - Jakarta EE Desarrolle aplicaciones web en Java
Extractos del libro
Jakarta EE Desarrolle aplicaciones web en Java
1 opinión
Volver a la página de compra del libro

Desplegar aplicaciones en Tomcat

Introducción

El diseño y realización de una aplicación es una cosa, pero su despliegue y puesta en producción es otra. El objetivo de este capítulo es presentar un ejemplo sencillo de los pasos principales que se deben seguir para desplegar una aplicación en un servidor de aplicaciones Tomcat.

Instalar el entorno

1. Instalar Java

Tomcat es una aplicación Java. Por lo tanto, es necesario instalar un entorno Java para poder arrancar Tomcat. La sección La plataforma Java SE del capítulo Introducción a Jakarta EE le proporciona todo lo que necesita para instalar este entorno.

2. Instalar Tomcat

Tomcat se puede instalar de dos maneras:

  • Descomprimiendo un archivo.

  • Como un instalador que permite la instalación de un servicio (específico para un entorno Windows).

Independientemente del modo de instalación, se crea el mismo árbol de directorios. La diferencia es que, cuando se usa el instalador, se instala de forma automática de un servicio adicional de Windows.

a. La verificación inicial

Antes de instalarlo, es conveniente verificar que dispone de los puertos utilizados por Tomcat. De forma predeterminada, los puertos utilizados son:

El puerto 8005, que permite apagar el servidor remoto enviando un comando configurable con una herramienta como telnet o putty.

El puerto 8080, que se utiliza para procesar las peticiones HTTP entrantes.

El puerto 8009, que se utiliza para procesar peticiones desde un servidor front-end web (como Apache), usando el protocolo AJP (Apache Jserv Protocol). Para obtener más información sobre este protocolo, consulte la documentación oficial disponible en: http://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html

Para comprobar que dispone de estos puertos, puede abrir un Símbolo del sistema en modo Administrador y ejecutar el comando netstat -anb en un entorno Windows. Este comando se utiliza para enumerar los puertos utilizados en la máquina, así como los procesos que los utilizan.

images/cap8_pag2.png

La herramienta netstat se puede utilizar en un entorno Linux. Para hacer esto, primero es necesario instalarla ejecutando el siguiente comando:

sudo apt install net-tools 

Una vez completada la instalación, es posible ejecutar el comando netstat -plnut para obtener el resultado deseado:

images/cap8_pag3.png

Si uno de los puertos mencionados anteriormente está...

Arquitectura

1. Organización física

El directorio de instalación de Tomcat tiene la siguiente organización:

images/08EP42N.png

Inicialmente, hay siete subdirectorios:

  • bin: el directorio bin contiene los scripts y jars necesarios para iniciar Tomcat; solo contiene scripts (con extensiones .bat para Windows y .sh para Linux). El jar bootstrap.jar es esencial porque es el punto de entrada para arrancar Tomcat. Los scripts startup.sh/bat y shutdown.sh/bat se utilizan respectivamente para iniciar y detener Tomcat.

  • conf: el directorio conf contiene archivos de configuración de Tomcat. Los siguientes archivos se tratarán en las siguientes secciones:

  • server.xml: es el archivo central de la configuración. En particular, permite definir los puertos HTTP que se van a utilizar, los hosts virtuales disponibles y, opcionalmente, las aplicaciones desplegadas. Para obtener más información, consulte la sección Administración general.

  • tomcat-users.xml: este archivo puede formar parte de la directiva de seguridad para el acceso a las aplicaciones desplegadas. Para obtener más información, consulte la sección Implementar la seguridad.

  • logging.properties: este archivo se utiliza para configurar la administración de registros de actividad. Para obtener más información, consulte la sección Registros de actividad de software.

  • lib: el directorio lib contiene todas las librerías...

Administración general

1. La aplicación que se va a desplegar

a. El proyecto

La aplicación que se va a desplegar se corresponde con el proyecto Eclipse Proyecto_A_DESPLEGAR. Los archivos fuente de este proyecto están disponibles para su descarga.

Se deben añadir las siguientes dependencias al archivo build.gradle para probar la implementación de registros de actividad en el programa:

compileOnly group: 'jakarta.servlet', name: 'jakarta.servlet-api',  
version: '5.0.0'  
compileOnly group: 'org.apache.tomcat', name: 'tomcat-juli',  
version: '10.0.7' 

Las dependencias se definen con la palabra clave compileOnly porque están disponibles en el directorio /bin de Tomcat. Por lo tanto, no es necesario incorporarlas en la aplicación que se va a implementar.

Este proyecto tiene la siguiente estructura:

images/cap8_pag20.png

Consta de cuatro páginas HTML y dos servlets. El propósito de estos archivos es resaltar los puntos de configuración esenciales en el despliegue de una aplicación:

  • El despliegue clásico.

  • El establecimiento de la seguridad.

  • El establecimiento de un mecanismo de registro de actividad.

b. Entrega

El despliegue de una aplicación comienza con su entrega. La entrega se realiza como un archivo de extensión .war (Web Archive). Esta tarea para un proyecto básico se realiza de manera bastante sencilla a través de Eclipse. Los pasos que se deben seguir son estos:

 Haga clic con el botón derecho del ratón en el proyecto y pulse en el menú Export - WAR File.

images/cap8_pag22.png

 Haga clic en el botón Finish. La exportación se ha completado.

c. Gestionar nombres de dominio

Para que los siguientes ejemplos funcionen correctamente, no necesitará comprar un nombre de dominio. En un entorno de desarrollo, es posible hacer una asociación entre la dirección IP del bucle local (127.0.0.1/localhost) y el nombre de dominio www.hacerdeporte.com.

En un entorno Windows, simplemente agregue la siguiente línea al archivo hosts, que se encuentra en el directorio C:\Windows\System32\drivers\etc.

127.0.0.1 www.hacerdeporte.com 

En un entorno Linux, es suficiente con agregar la misma línea al archivo /etc/hosts.

2. Visión general

Antes de comenzar a configurar el servidor para el despliegue de una aplicación, es necesario responder...

Implementar la seguridad

La seguridad es un punto crítico en el despliegue de una aplicación. De hecho, una vez desplegada, los usuarios no autorizados pueden acceder a la aplicación, simplemente porque tienen acceso a la red en la que se ha desplegado la aplicación (Internet, red corporativa, red privada...). Además, un tercero puede interceptar la comunicación entre un usuario y la aplicación para espiar el contenido. Por lo tanto, es necesario limitar el acceso y evitar la interceptación de contenidos. El objetivo de esta sección es presentar las principales herramientas disponibles para implementar una seguridad satisfactoria.

1. Restringir el acceso

La restricción de acceso es un mecanismo que funciona sobre la dirección IP del remitente de la petición y la dirección IP de la tarjeta de red del servidor que aloja Tomcat a través de la cual se recibe la petición. Esta técnica permite autorizar o impedir el procesamiento de una petición en función de las direcciones IP utilizadas para enrutar la petición.

a. La restricción de la dirección IP del emisor

Es posible prohibir que ciertas máquinas accedan a una o más aplicaciones alojadas en Tomcat en función de su dirección IP. Para hacer esto, es necesario utilizar la valve org.apache.catalina.valves.RemoteAddrValve. Esta valve se puede colocar en el motor, en un host o en una aplicación concreta en función del ámbito que se le quiera dar.

La etiqueta <valve> tiene cuatro atributos principales en este caso:

Atributo

Características

Allow

Este atributo se utiliza para definir una expresión regular (según la clase java.util.regex) que describe las direcciones IP de cliente aceptadas.

Deny

Este atributo se utiliza para definir una expresión regular (según la clase java.util.regex) que describe las direcciones IP de cliente denegadas.

denyStatus

Este atributo se utiliza para establecer el código de estado de la petición http en caso de rechazo. De forma predeterminada, el valor es 403.

addConnectorPort

Este atributo es un valor booleano que indica si los atributos allow y deny también definen el puerto de los conectores permitidos. El valor predeterminado es false. Si es true, las expresiones regulares de los atributos allow y deny deben tener la forma...

Administrar registros de actividad

1. Registros de actividad de acceso

Cuando una aplicación se pone en producción, puede ser interesante hacer un seguimiento de los accesos de los usuarios. Tomcat utiliza valves para realizar este procesamiento. Hay dos valves principales que permiten registrar el acceso en un archivo o base de datos. Estas valves se llaman:

Estas valves se configuran en el archivo server.xml. Se pueden colocar a nivel del motor, del host o de la aplicación, en función del ámbito que deban tener.

De forma predeterminada, Tomcat configura una valve de tipo AccessLogValve a nivel del host, como aquí:

<Valve    className="org.apache.catalina.valves.AccessLogValve"  
        directory="logs"  
        prefix="localhost_access_log"   
        suffix=".txt"  
        pattern="%h %l %u %t &quot;%r&quot; %s %b" /> 

Esta valve tiene varios atributos. A continuación, se muestran los significados de los principales:

  • className: este atributo permite especificar la clase Java correspondiente a la valve utilizada. Los demás atributos presentes son específicos de AccessLogValve.

  • directorioy: este atributo permite determinar el directorio en el que se escribirá el archivo (ruta relativa a CATALINA_BASE o ruta absoluta).

  • prefix: este atributo permite determinar el prefijo del nombre de archivo.

  • suffix: este atributo permite determinar el sufijo del nombre de archivo.

  • rotatable: este atributo permite determinar si se incluye una fracción horaria en el nombre de archivo, entre el prefijo y el sufijo. El valor predeterminado es true.

  • fileDateFormat: este atributo permite determinar el formato de la parte horaria (pattern) del archivo si el atributo rotatable se establece en true. El valor...

Conclusión

Este capítulo concluye el libro presentando las grandes líneas de despliegue de una aplicación Jakarta EE en el servidor Tomcat. No se han tratado temas interesantes como la configuración de un front-end web, la configuración de una granja de servidores (clúster), la administración del balanceo de carga (load-balancing), etc. Espero que estas pocas páginas le hayan hecho querer ir más allá en este tema, a caballo entre el mundo del desarrollo y el de la administración.