server.xml es el archivo principal de configuración para Tomcat, al igual que otros archivos de configuración para productos empleados en servidor puede contener una gran variedad de parámetros, sin embargo, esta guia se concentrará en los parámetros principales.
<!-- -->
y valores "Default" El archivo server.xml es un archivo en
XML
, el cual de no contener una estructura conforme a XML, se indicará al arranque de Tomcat; dicho archivo se encuentra bajo el directorio /usr/local/tomcat/conf
donde /usr/local/tomcat
es el directorio definido en CATALINA_HOME
.
Como cualquier otro documento en XML todo contenido entre <!-- -->
es considerado un comentario, y por lo tanto cualquier parámetro que se encuentre entre estos caracteres no es utilizado por "Tomcat"; aquellos parámetros que no sean definidos dentro de server.xml son asignados un valor "Default" por Tomcat.
<Server>
es el elemento principal del archivo server.xml y todas las demás secciones deben encontrarse entre estos nodos; el atributo port
indica el puerto TCP donde se espera la señal de cierre (shutdown
) de Tomcat, el cual rara vez es modificado.
A través de los elementos <Listener>
se configuran las extensiones JMX ("Java Management Extensions") que serán utilizadas por Tomcat, dichos elementos toman dos atributos : className
que indica la Clase diseñada para escuchar sobre eventos JMX y debug
para especificar el nivel de "debug" generado al tiempo de ejecución.
Anidado dentro de los elementos <GlobalNamingResources>
es posible definir recursos JNDI para ser utilizados globalmente en Tomcat. Lo anterior evita que estos recursos tengan que ser declarados a nivel de WAR de manera individual.
A través de <Resource>
es como define el tipo de recurso JNDI que será utilizado y mediante <ResourceParams>
se especifican los parámetros específicos que tomará el recurso en dicha instancia de Tomcat.
Esta parámetro permite configurar Tomcat para diferentes modalidades de ejecución, en el archivo server.xml "Default" se definen dos modalidades a través del atributo name
; la definición asignada name="Catalina"
es empleada para ejecutar Tomcat individualmente, esto es representado con la linea roja de la siguiente gráfica:
El elemento Connector
representa las conexiones (Puertos TCP) que serán abiertas por Tomcat al arranque, a su vez dentro de cada elemento Connector
se definen diversos atributos los cuales dan más detalles acerca de la conexión.
El elemento Connector
más importante es aquel que define la clase: HttpConnector
.
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" /> |
La declaración anterior indica que Tomcat esta dispuesto a dar respuesta a requisiciones que arriven en el puerto 8080
del "Host" donde esta instalado Tomcat; si recuerda la
ejecución y pruebas de Tomcat
a esto se debió el agregar el fragmento :8080
.
Para ambientes de producción en los cuales toda requisición será atendida por Tomcat el parámetro port
de este elemento debe ser modificado al valor de 80
, este puerto es el ampliamente conocido puerto TCP 80 con el que intenta comunicarse cualquier Navegador("Netscape","Explorer","Opera" u otro) en Internet.
Gráficamente esto es representado con la linea roja de la siguiente gráfica:
Esta linea roja indica que Tomcat actúa en efecto como "Servidor de Páginas".
Otras declaraciones para Connectors
son aquellas para utilizar encriptación (HTTPS) y los conectores AJP; la configuración de HTTPS es un tanto extensa y no se describirán los detalles, sin embargo, los conectores AJP son aquellos utilizados para la comunicación entre
Apache y Tomcat
y son los siguientes:
<Connector port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" /> |
Esta declaración indica que el puerto 8009 estará recibiendo conexiones bajo ajp13
, lo anterior es solo de interés si utiliza Apache en conjunción con Tomcat , lo cual equivale a la linea verde del diagrama anterior.
Los elementos <Engine>
los cuales deben encontrarse anidados dentro de <Service>
representan el mecanismo que atenderá toda solicitud arrivada Tomcat, esto es, toda solicitud recibida por las definiciones Connectors
será procesada por <Engine>
, los atributos de este elemento son los siguientes:
<Engine name="Catalina" defaultHost="localhost" debug="0"> |
defaulthost
representa el nombre del servidor Tomcat mientras debug
indica el nivel de "debug" generado al tiempo de ejecución.
Los elementos Logger
le indican a Tomcat hacia donde deben ser enviados los registros "Logs" :
<Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="localhost_log." suffix=".txt" timestamp="true"/> |
Lo anterior indica que los registros de Tomcat deben ser enviados al archivo localhost_log.txt
; la ubicación de este registro ("log") puede ser modificada al nivel de los elementos Host
los cuales permiten definir Virtual Hosts.
Analice estos registros con Analog .
Los elementos Host
permiten definir varios Hosts "Virtuales" para Tomcat, esto es, a través del elemento <Engine>
se define un sitio(localhost) para atender solicitudes, a través de Host
es posible definir diversos sitios "Virtuales", su configuración es la siguiente:
<Host name="desarrollo.servidorprueba.com" debug="0" appBase="webapps" unpackWARs="true"> |
Lo anterior indica que el sitio desarrollo.servidorprueba.com
contiene sus aplicaciones (Archivos
WARS )
bajo el directorio $CATALINA_HOME/webapps
, donde $CATALINA_HOME es /usr/local/tomcat
; el atributo unpackWARs
le indica a Tomcat que debe descomprimir los archivos WAR's al arranque.
Como ya fue mencionado, dentro de estos elementos <Host>
es posible utilizar <Logger>
para generar registros ("logs") por cada sitio virtual.
Context
es un elemento utilizado para indicar la ubicación de las aplicaciones ejecutadas en Tomcat , en su configuración "Default" estas aplicaciones se encuentran dentro del directorio webapps
bajo el directorio raíz de Tomcat ( /usr/local/tomcat
). El entrar en los detalles de Context
seria un tanto prematuro ya que aún no se ha descrito que es un aplicación en Tomcat .
Una aplicación en Tomcat o cualquier Servlet Engine(Web-Container) es un conjunto de "JSP's (Java Server Pages)" y/o "Servlets" agrupados con ciertos parámetros de arranque y seguridad, este conjunto de archivos / aplicación en todo Servlet Engine es conocido como un WAR (Web-Archive).
En otra sección de esta guia se entra en detalle sobre la composición de estas aplicaciones o WARS (Web-Archive's): WARS .