jueves, 9 de julio de 2009

¿ Como es la estructura de directorios de Tomcat ?

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 guía se concentrará en los parámetros principales.

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 /etc/tomcat6, si se instalo con apt-get o rpm; si se descomprimió la distribución binaria estará en $CATALINA_HOME/conf.

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.


Listener

A través de los elementos 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. Si entrar en detalle de JMX esto permite monitorizar Tomcat con cualquier aplicación.


GlobalNamingResources , Resource y ResourceParams

Anidado dentro de los elementos 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 es como define el tipo de recurso JNDI que será utilizado y mediante se especifican los parámetros específicos que tomará el recurso en dicha instancia de Tomcat.

Connector

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.


< Conector>

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 arriben en el puerto 8080 del "Host" donde esta instalado Tomcat; si recuerda la ejecución y pruebas en 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.

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.


Engine

Los elementos los cuales deben encontrarse anidados dentro de representan el mecanismo que atenderá toda solicitud arribada Tomcat, esto es, toda solicitud recibida por las definiciones Connectors será procesada por , 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.


Logger

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.


Host

Los elementos Host permiten definir varios Hosts "Virtuales" para Tomcat, esto es, a través del elemento 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 WAR) bajo el directorio $CATALINA_HOME/webapps; el atributo unpackWARs le indica a Tomcat que debe descomprimir los archivos WAR's al arranque. En java las aplicaciones web se empaquetan con la extensión war.

Como ya fue mencionado, dentro de estos elementos es posible utilizar para generar registros ("logs") por cada sitio virtual.

Context

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 ), o en entornos que se descomprimió la versión binaria $CATALINA_HOME/webapps.

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 conclusión todos los wars (aplicaciones web empaquetadas) o las aplicaciones web sin empaquetar van en donde indica la propiedad path del tag context.