Documentación Servidor Apache TomCat

Anuncio
1
Apache TomCat 6.0.32
Documentación Servidor
Apache TomCat
ÍNDICE
1.
Introducción....................................................................................................................... 3
2.
Componentes básicos del Servidor Apache Tomcat ............................................. 3
3.
Instalación y distribución del Servidor Apache Tomcat 6.0.X ............................. 3
4.
Etapas genéricas de instalación de Apache Tomcat .............................................. 4
a-
Caso de Instalación en Windows:............................................................................ 4
b-
Caso de Instalación en Linux .................................................................................... 5
5.
Términos utilizados en Apache Tomcat ..................................................................... 5
6.
Iniciar y Detener el Servidor Apache Tomcat ........................................................... 6
7.
Componente Servidor de Apache Tomcat................................................................. 8
8.
Componente Servicio de Apache Tomcat ................................................................. 9
9.
Componente Ejecutor ..................................................................................................... 9
10.
Componente conector HTTP ..................................................................................... 9
11.
Componente Conector AJP ..................................................................................... 10
12.
Contenedores .............................................................................................................. 10
13.
Aspectos de las Aplicaciones Web a desplegar en el servidor ..................... 12
a)
Archivos de Librerías Compartidas....................................................................... 12
b)
Descriptor de contexto de Tomcat ........................................................................ 13
c)
Jerarquía de código fuente de la aplicación ....................................................... 13
d)
Archivo de configuración BUILD.XML .................................................................. 14
14.
Directorio de instalación de Apache Tomcat ...................................................... 14
Directorio /bin ........................................................................................................................ 14
Directorio /conf ...................................................................................................................... 15
2
Apache TomCat 6.0.32
Directorio /lib ......................................................................................................................... 16
Directorio /logs ...................................................................................................................... 16
Directorio /temp..................................................................................................................... 17
Directorio /webapps ............................................................................................................. 17
Directorio /works ................................................................................................................... 17
15.
Manejo de la Seguridad en Apache TomCat ....................................................... 18
16.
Políticas de Seguridad en Apache Tomcat ......................................................... 19
17.
Protección de Paquetes en Apache Tomcat ....................................................... 19
18.
Iniciar Apache Tomcat con SecurityManager ..................................................... 20
19.
Problemas Comunes que pueden presentarse .................................................. 20
3
Apache TomCat 6.0.32
1. Introducción
Apache Tomcat es un servidor de aplicaciones escrito totalmente en Java,
multiplataforma y que se distribuye gratuitamente desde su sitio oficial
http://apache.tomcat.com. El mismo permite albergar aplicaciones de tipo web Java y
sus servicios web asociados de modo tal que los mismos puedan ser consumidos
desde cualquier ubicación física, sea en forma local (localhost1) o en forma remota
mediante la dirección IP del mismo.
Es una aplicación que lo que hace es permitir que una estación de trabajo se pueda
transformar en un servidor. También posee extensiones o plugins que permiten
incrementar su funcionalidad. Por mencionar, se tiene los plugins Apache Ant2 y
Apache Maven3.
El mismo fue desarrollado por ASF (Apache Software Foundation), y brinda soporte
a las especificaciones de JSP (Java Server Pages) y al uso de Servlets (programas
Java que pueden ser ejecutados en el servidor) y posee una interface de
comunicación mediante el protocolo HTTP.
Además, se trata de un servidor de carácter libre (Open Source), que dispone de
una configuración muy simple, mediante el uso de archivos XML.
2. Componentes básicos del Servidor Apache Tomcat
Los componentes principales del servidor web son tres:
 Catalina: se trata del contenedor de Servlets del servidor. Implementa las
especificaciones de JSP y Servlets de Java actuales, utilizando una base de datos
donde almacena información sobre usuarios, contraseñas y roles.
 Coyote: es un conector que permite que el servidor envíe peticiones TCP
mediante el uso del protocolo HTTP.
 Jasper: es el motor que maneja páginas JSP y realiza el mapeo de archivos
JSP a código Java en Servlets.
3. Instalación y distribución del Servidor Apache Tomcat 6.0.X
El servidor de aplicaciones viene distribuido como un archivo comprimido .ZIP (para
el caso de Windows) o como un archivo comprimido .tar.gz (para Linux). Dicho
instalador se lo descarga desde el sitio oficial de Apache.
1
Localhost: nombre que se asigna a la dirección IP de montaje local del servidor.
Apache Ant: es un plugin para el servidor web Apache que permite generar scripts de configuración
para los distintos recursos de las aplicaciones desarrolladas.
3
Apache Maven: es un plugin para el servidor web Apache que permite gestionar los entregables y el
empaquetamiento de los componentes de las aplicaciones web, siguiendo un patrón de diseño.
2
Apache TomCat 6.0.32
4
4. Etapas genéricas de instalación de Apache Tomcat
1.
2.
3.
4.
Se debe instalar el JDK, que en este caso debe respetar la versión Java 1.6.
Descargar del sitio web e instalar el aplicativo Apache Tomcat.
Descargar e instalar Apache Ant.
Descargar e instalar CVS (Sistema de Versiones Concurrentes)
a- Caso de Instalación en Windows:
En este caso el servidor de Aplicaciones se debe instalar como un servicio de
Windows. Dicho servicio podrá ser iniciado en forma manual o automática. Para ello,
se hace uso de la herramienta de administración de servicios de Windows.
Lo que hay que tener en cuenta en este caso, es que la versión a instalar del
servidor cumpla con la arquitectura del procesador del equipo donde se vaya a
instalar, X86 (Arquitectura de Procesadores de 32 bits, primera generación) o X64
(Arquitectura de Procesadores de 64 bits, segunda generación).
También existe una distribución de dicho servidor provista por Bitnami
(http://bitnami.org/) denominada Apache TomcatStack, la cual posee integrados
varios componentes que facilitarían efectuar el desarrollo de aplicaciones Java web y
subirla al servidor, incluyendo entre las mismas al motor de base de datos mysql y
una interface gráfica escrita en PHP denominada phpmyadmin.
Por otra parte también existen herramientas integradas similares a la anterior para
el alojamiento de sitios web, tanto para plataformas Windows y Linux denominadas
WAMP (abreviatura de Windows, Apache, MySQL y PHP) o XAMP para el caso de
Linux. Esta herramienta es un framework que trae integrados el servidor de
aplicaciones Apache Tomcat, el sistema gestor de base de datos MySQL y el
intérprete de scripting PHP, ambos configurados y conectados al servidor web Apache
Apache TomCat 6.0.32
5
de modo que los desarrolladores podrán programar aplicaciones web escritas en PHP
y subirlas al servidor para su propia corrida.
b- Caso de Instalación en Linux
En el caso de sistemas de tipo Linux, el servidor también se instalará como un
servicio. Para poder llevar a cabo la instalación en este sistema operativo, previamente
se debe haber seteado la variable de entorno JAVA_HOME para que su Path apunte
al directorio donde se encuentra instalado el JDK de Java.
Una vez seteada dicha variable, se debe ejecutar el script de consola para Linux
que se haya descargado desde el sitio. Para ello, en el directorio de instalación de
Linux, se debe descomprimir el contenido del fichero empaquetado que contiene al
servidor, y desde la terminal (es la consola de Linux), se debe configurar a Apache
para que se ejecute como un servicio. Ello es llevado a cabo mediante los siguientes
comandos de consola de Linux:
cd $CATALINA_HOME/bin
tar xvfz commons-daemon-native.tar.gz
cd commons-daemon-1.0.x-native-src/unix
./configure
make
cp jsvc ../..
cd ../..
Luego se debe ingresar los siguientes comandos para terminar la configuración:
cd $CATALINA_HOME
./bin/jsvc -cp ./bin/bootstrap.jar \
-outfile ./logs/catalina.out -errfile ./logs/catalina.err \
org.apache.catalina.startup.Bootstrap
El
archivo
$CATALINA_HOME/bin/commons-daemon-1.0.x-native-
src/unix/native/Tomcat5.sh es el que permite que el servidor se inicie automáticamente
cuando se inicia el sistema operativo Linux, y debe hacerse referencia al mismo dentro
del archivo de configuración del sistema localizado en el directorio /etc/init.d.
5. Términos utilizados en Apache Tomcat
 Servidor: hace referencia al contenedor que posee el servidor de aplicaciones,
y es el lugar donde se alojan los sistemas web.
 Servicio: es un componente intermediario que vive dentro de un servidor e
interactúa con un engine mediante conectores.
 Engine: representa el procesamiento en paralelo de un servicio específico.
Como un servicio podría tener varios conectores, recibe y procesa todas las solicitudes
desde dichos conectores, devolviendo la respuesta al conector por medio del cual se
conecta con el cliente.
 Host: es una asociación entre un nombre de dirección de red, por ejemplo
www.compañia.com al servidor Tomcat. Un engine podría tener múltiples hosts y el
elemento host también soporta alias de redes.
6
Apache TomCat 6.0.32
 Connector: maneja la configuración con el cliente. Hay varios conectores
disponibles para Apache Tomcat. Se incluyen entre ellos, al conector HTTP, el
conector AJP4 y también el HTTPD.
 Contexto: representa una aplicación web. Un host puede tener múltiples
contextos, cada uno con un único Path. La interface del contexto podría ser
implementada para crear contextos personalizados.
6. Iniciar y Detener el Servidor Apache Tomcat
Para iniciar y detener el servidor existen dos archivos de suma importancia, los
mismos son:
$CATALINA_HOME/bin/startup - para iniciar o arrancar el servidor
$CATALINA_HOME/bin/shutdown - para parar o detener el servidor
Al iniciar el servidor se solicitará el ingreso del nombre de usuario y contraseña que
haya sido configurado durante la instalación del mismo que por defecto es tomcat,
tomcat. En todo caso el archivo /conf/tomcat-users.xml posee dicha información.
Luego, desde el navegador web se puede acceder a la capa de front-end del
servidor, que es la interface web desde donde puede accederse al mismo. Para
ingresar al mismo hay que poner la url: http://localhost:8080 donde el puerto por
defecto es 8080, salvo que se haya definido otro durante el proceso de instalación.
Dicha información puede visualizarse en el archivo /conf/server.xml.
La interface web que se abrirá tendrá la forma de:
4
AJP (Apache JServ Protocol): es un protocolo binario que permite enviar solicitudes desde un servidor
web a un servidor de aplicaciones que corre detrás del servidor web.
7
Apache TomCat 6.0.32
En donde la opción Tomcat Manager es donde se puede acceder a las aplicaciones
web desplegadas en el servidor. Para acceder a dicha función se debe ingresar
nombre de usuario y contraseña.
Donde para cada aplicación desplegada se puede observar su estado, si se
encuentra en ejecución o no, la cantidad de sesiones, su contexto, nombre y también
se dispone de comandos para iniciar/detener/replegar/dar de baja la aplicación en el
servidor.
8
Apache TomCat 6.0.32
7. Componente Servidor de Apache Tomcat
El componente servidor de Apache corresponde al contenedor de Servlets llamado
Catalina. Su configuración se encuentra en el archivo /conf/server.xml.
Este archivo de configuración tiene asociados varios atributos, cuyos valores
determinan características de configuración respecto al despliegue del servidor. Entre
la información que se muestra en dicho fichero se tiene:

Información sobre las clases que se cargan.

Recursos utilizados en el servidor.

Características de conexión.

En este tag de XML se visualiza información referente al puerto de
despliegue del servidor. En este caso es el puerto 8088. Si en el equipo se
tienen instaladas varias instancias del servidor Apache, para cada una se
debe configurar un puerto diferente.
Información sobre el host donde reside el servidor.
Por otra parte, en el archivo tomcat-users.xml se muestra información referente a
los datos del usuario administrador del servidor, específicamente su nombre de
usuario y contraseña.
Apache TomCat 6.0.32
9
En este caso el nombre de usuario y la contraseña del servidor es Tomcat.
Todas las implementaciones del servidor Apache comparten los siguientes atributos
en común:

CLASSNAME: es el nombre de la implementación de la clase Java que
se va a usar, debe implementar la interface org.apache.catalina.Server. Si no se
especifica nada, entonces se va a utilizar la implementación estándar.

PORT: es el puerto donde se va a escuchar el comando shutdown por
TCP/IP.

SHUTDOWN: es el comando que el servidor va a recibir por TCP/IP que
le indica que se debe apagar el servidor.
El servidor puede ser iniciado de tres maneras:



Desde la línea de comandos mediante la ejecución de los scripts anteriormente
mencionados.
Desde una aplicación Java.
En forma automática, como servicio de Windows.
8. Componente Servicio de Apache Tomcat
Este componente representa la combinación de varios conectores que vinculan las
engines para procesar solicitudes. Los servicios residen dentro del elemento Servidor.
Sus atributos asociados son classname, que cumple la misma función que en el
componente servidor y name, que especifica el nombre a mostrar del servicio.
9. Componente Ejecutor
Un ejecutor establece un pool thread que puede ser compartido entre varios
componentes en Tomcat. Historicamente ha habido un thread pool por cada
conexión creado, pero el desarrollador puede crear el suyo propio. El ejecutor
implementa la interface org.apache.catalina.Executor. Es un elemento cercano a los
servicios.
10. Componente conector HTTP
Este componente soporta el protocolo HTTP y habilita a Catalina para que funcione
como un servidor web y le dota de habilidades para ejecutar los Servlets y páginas
Apache TomCat 6.0.32
10
JSP. Una instancia particular de ese componente lo que hace es escuchar por un
cierto puerto TCP por peticiones para el servidor.
Los conectores se pueden configurar como una parte de un simple servicio, cada
uno respondiendo a un engine asociado para procesar y generar la respuesta.
Este conector brinda soporte al manejo de proxyes5 de red y al uso del protocolo
de transferencia segura SSL6.
11. Componente Conector AJP
Este elemento representa un componente conector que se comunica con un
conector web mediante el protocolo AJP. Es usado para aquellos casos donde se
desee tener una integración invisible integrando a Tomcat 6 con alguna instalación de
Apache y poder manejar el contexto estático en la aplicación web soportando el
procesamiento SSL.
12. Contenedores
Dentro de Apache Tomcat se cuenta con varios contendores de elementos para el
mismo:




Contexto
Engine
Host
Cluster
Contexto: antes de hablar del elemento contexto, se debe hacer referencia a una
variable utilizada por el mismo denominada $CATALINA_BASE. Dicha variable contiene
el directorio base a través del cual se pueden resolver la mayoría de los paths del
sistema. Si Apache Tomcat no está configurado para múltiples instancias, entonces el
directorio CATALINA_BASE va a tener el valor de $CATALINA_HOME, que almacena el
directorio de instalación de Tomcat 6.
El Contexto representa a una aplicación web, la cual funciona con un host virtual
particular. Cada aplicación web esta empaquetada en un archivo WAR, que es el
formato de fichero empaquetado definido de acuerdo a la especificación Servlet del
sistema. La aplicación web usada para procesar cada solicitud HTTP es seleccionada
mediante Catalina, basándose en la longitud más larga posible del prefijo de la URL a
través del path del contexto definido. Luego esa solicitud se la envía a un servlet que
mapea y resuelve la solicitud correspondiente. El contexto de una aplicación web en
particular está definida en el archivo ubicado, dentro del directorio del proyecto /WEBINF/web.xml.
5
Proxy de red: es un programa de red que se comunica con otro programa para establecer la conexión
de red. Se usa para gestionar el acceso a una red determinada.
6
SSL (Secure Socket Layer): es un protocolo de red que permite efectuar la transferencia mediante
sockets que encriptan la transmisión. Se utilizan en los clientes de correo electrónico para proteger la
información del usuario, en este caso la contraseña.
11
Apache TomCat 6.0.32
Cada contexto que se defina para la aplicación debe tener una ruta única, ya que es
el punto de acceso a la misma desde el servidor web.
Engine
Representa el proceso completo de procesamiento de solicitudes de máquina
asociados con un servicio Catalina en particular. Recibe y procesa todas las
solicitudes desde uno o más conectores y devuelve la respuesta completa al conector
con el que se comunica con el cliente.
Todo engine trabaja con un elemento servicio, seguido de aquellos conectores
asociados con el servicio.
Host
El componente host representa a un host virtual, que es una asociación entre un
nombre de red para el servidor, como ser www.compañia.com y el servidor particular
Catalina donde se encuentra corriendo. Dicho nombre debe ser registrado en el DNS
(Servicio de Nombres de Domino) que administra el dominio de internet al cual el
equipo se encuentra conectado. También se pueden usar alias de nombre para
asociar un mismo dominio con varios hosts virtuales. Los hosts se comunican
directamente con los engines. Dentro del host se tienen los contextos, que eran las
aplicaciones web y es allí donde se almacenan los datos donde se procesan.
Cluster
Este componente provee replicación de sesiones, replicación de atributos del
contexto y el desarrollo de ficheros WAR amplios. Su implementación es muy
extensible y está expuesta a una gran variedad de opciones, realizando la
configuración que se desee.
12
Apache TomCat 6.0.32
13. Aspectos de las Aplicaciones Web a desplegar en el servidor
Una aplicación web está definida como una jerarquía de directorios y archivos en
una organización estándar. Dicha jerarquía de directorios se empaqueta en un fichero
conocido como .WAR. Este formato estándar es el que se utilizará cuando se
distribuya la aplicación durante su implementación.
La jerarquía de más alto nivel de la aplicación es la raíz del documento. Allí se
localizan los archivos HTML y páginas JSP que componen la interfaz de usuario.
Cuando el desarrollador despliega la aplicación en el servidor, le asigna un path
contextual a la aplicación. Ese path contextual considera /nombreAplicación. En dicho
path debe estar presente el archivo index.html que será el punto de acceso principal a
la aplicación.
Los siguientes componentes que se encuentran presentes en la raíz del proyecto
web son:
 Páginas HTML, JSP, etc. Todos los ficheros que componen a la interface
gráfica web de la aplicación se encuentran localizados en la raíz del proyecto web. Las
mismas pueden ser visibles desde el navegador web.
 /WEB-INF/web.xml. Es el descriptor web de la aplicación, un archivo XML que
describe a los Servlets y demás componentes de la aplicación y sus parámetros
asociados.
 /WEB-INF/clases/. Este directorio contiene todos los archivos Java que
implementen las clases de la aplicación. Si las mismas están organizadas dentro de
paquetes, entonces ello es reflejado de la misma manera en la estructura de
directorios físico del sistema operativo.
 /WEB-INF/lib/. Este directorio contiene todas las librerías y drivers utilizados en
la aplicación, los cuales tienen la extensión de tipo .jar.
a) Archivos de Librerías Compartidas
Las librerías que se utilizan dentro de Apache y que son compartidas por las
distintas aplicaciones y que son visibles para todas ellas. Eso se configura en el path
que se muestra dentro de $CATALINA_HOME/lib. En la instalación por defecto se
incluye a las APIs de Servlet, JSP y JAXP (que es un parseador de XML).
13
Apache TomCat 6.0.32
b) Descriptor de contexto de Tomcat
El archivo /META-INF/context.xml puede ser utilizado para definir opciones de
configuración específicas de Tomcat, como ser data sources, loggers, administradores
de sesión entre otros. Este archivo debe tener un elemento contexto.
c) Jerarquía de código fuente de la aplicación
Como recomendación se tiene que conviene realizar una separación dentro de la
jerarquía de directorios del código fuente con aquella que contiene la aplicación
desplegada. Eso conviene llevarse a cabo para facilitar la administración, tener un
control más sencillo y distribuir más fácilmente la aplicación. Para realizar esta
operación se tiene la herramienta Ant de Apache que permite automatizar el proceso,
creando scripts para tal fin.
En el nivel superior del directorio fuente del proyecto se tiene los siguientes
componentes:
 Docs/ - en este directorio se almacena la documentación de la aplicación.
 Src/ - en este directorio se almacenan los ficheros de código fuente de las
clases java que componen la aplicación.
 Web/ - aquí se ubican las páginas HTML, JSP, archivos JavaScript, hojas de
estilo CSS e imágenes, que serán accesibles para los clientes. Este directorio debe
ser la raíz de la aplicación web y cualquier subdirectorio suyo constituye la URL de
acceso a dichos ficheros.
 Web/WEB-INF/ - aquí se ubican los ficheros de configuración anteriormente
mencionados.
Cuando se hace la compilación y despliegue de la aplicación Web, se crean los dos
directorios siguientes:
 Build/ - que contiene la imagen de todos los ficheros compilados de la
aplicación web.
 Dist/ - aquí se ubica el fichero .WAR que constituye el fichero de despliegue y
también aquí existe el directorio /dist/lib donde se colocan todas las librerías que son
requeridas por la aplicación web.
La aplicación desplegada se colocará dentro del directorio webapps de Apache
Tomcat. La operación de deploy copia el proyecto dentro de dicho directorio y la
undeploy lo elimina de allí. Cuando el servidor web esta activo no se permite realizar
eliminaciones de proyectos desplegados en el directorio webapps. Para poder
hacerlo, se debe hacer un undeploy o sino detener el servidor antes de intentar
eliminar el proyecto desplegado.
A su vez, cada vez que se inicia el servidor, se cargan automáticamente todas
aquellas aplicaciones que hayan sido desplegadas anteriormente en el mismo.
14
Apache TomCat 6.0.32
d) Archivo de configuración BUILD.XML
Cuando se utiliza la herramienta Ant para administrar la compilación de los ficheros
de código fuente Java, el mismo crea un archivo de compilación denominado build.xml
que define los pasos de procesamiento requeridos. Este archivo se encuentra
localizado en el directorio de nivel superior de la jerarquía de código fuente.
14. Directorio de instalación de Apache Tomcat
El directorio donde se encuentra instalado Apache Tomcat posee los siguientes
elementos:
 LICENCE – este archivo contiene información sobre el acuerdo de licencia que
el desarrollador debe aceptar al instalar el servidor de aplicaciones en el equipo.
Contiene detallado punto por punto cada característica correspondiente al mismo.
 NOTICE – este archivo brinda información referente a las características del
producto y su origen indicando su proveedor.
 RELEASE-NOTES –este archivo posee información referente a la versión de
apache instalada, como ser nuevas características, APIs, bugs corregidos, protocolos
soportados, etc.
 RUNNING.txt – este fichero brinda información para el administrador del
sistema sobre cómo debe efectuar el inicio, despliegue y parada del servidor, que
procesos son los implicados y donde se ubican dentro de la jerarquía de directorios.
Además de los ficheros mencionados anteriormente, se dispone de los siguientes
directorios:
Directorio /bin
Dentro de la carpeta bin se encuentran todos los ficheros correspondientes a
servicios que brinda soporte el servidor. También allí se cuenta con scripts y archivos
por lotes de Windows utilizados para iniciar/detener el servidor, configurarlo, etc.
15
Apache TomCat 6.0.32
Dentro del directorio se cuenta con los siguientes archivos que son fundamentales
para el funcionamiento del servidor:
 Startup.bat o startup.sh – es el archivo que permite iniciar el servidor. Cuando
se lo ejecuta, el servidor se carga en el sistema operativo e inicia sus servicios,
cargando todas las aplicaciones web que hayan sido desplegadas anteriormente.
 Shutdown.bat o shutdown.sh – es el archive que permite detener el servidor.
Ejecuta comandos que detienen todos los servicios que estén en ejecución sobre el
mismo y al ejecutarlo aquellas aplicaciones web que hayan sido desplegadas sobre el
mismo dejan de estar accesibles para su uso.
 Tomcat6.exe o tomcat6w.exe – es el proceso ejecutable correspondiente al
servidor. Cuando el mismo se encuentra activo, en el administrador de servicios del
sistema dicho proceso se encontrará en ejecución.
 Catalina.bat o catalina.sh – es el proceso correspondiente al contenedor de
Servlets del servidor.
 Service.bat – es el archivo por lotes que gestiona la configuración y despliegue
del servidor como un servicio en el sistema.
 Setclasspath.bat – es el proceso que maneja las variables de entorno del
servidor.
 Digest.bat – es el proceso que brinda soporte al mapeo de objetos XML a
clases Java.
Directorio /conf
En este directorio se almacenan todos los ficheros de configuración del servidor.
Entre los mismos se cuenta con:
16
Apache TomCat 6.0.32
 Catalina.properties y Catalina.policy – estos ficheros poseen información
sobre la configuración del componente Catalina, que es el contenedor de Servlets del
sistema.
 Context.xml – este fichero almacena la ruta que por defecto dentro de las
aplicaciones web se dispondrán sus archivos de configuración para cada aplicación en
particular.
 Log4j.properties – este fichero almacena la configuración de la librería log
para el manejo de eventos de log en el sistema.
 Logging.properties – este fichero almacena información asociada también al
manejo de logs vinculado a su presencia dentro del servidor Apache Tomcat.
 Server.xml – este fichero almacena información de configuración general de
despliegue del servidor en la máquina.
 Tomcat-users.xml – este fichero contiene información de acceso de usuarios
en el servidor Apache Tomcat.
 Web.xml – este fichero es el descriptor de las aplicaciones web desplegadas
en el servidor.
Directorio /lib
En este directorio se colocan todas las librerías utilizadas en el servidor y
requeridas por las aplicaciones web en general.
Directorio /logs
En este directorio se almacenan ficheros de texto plano donde se registran todos
los eventos que se presentaron al utilizar el servidor, registrados línea por línea, junto
a su fecha, hora y el host en el que se produjo.
17
Apache TomCat 6.0.32
Directorio /temp
Aquí se almacenan todos los ficheros temporales que son utilizados en el sistema y
creados durante la operación del servidor web.
Directorio /webapps
En este directorio se ubican todas las aplicaciones web que han sido desplegadas
en el servidor. Cuando el mismo se encuentra activo, se prohíbe el borrado de algún
fichero de este directorio, ya que se debe garantizar la disponibilidad de todos los
recursos en la aplicación web en este caso.
Directorio /works
Aquí se almacenan todos los ficheros requeridos para el despliegue de aplicaciones
web en la máquina local (localhost). Todos los proyectos desplegados en el equipo se
encuentran en el directorio \work\Catalina\localhost.
Apache TomCat 6.0.32
18
15. Manejo de la Seguridad en Apache TomCat
Las librerías de Java, Security Manager lo que hace es gestionar el acceso y la
ejecución de un Applet7 desde el navegador y también prevenir que algún agente
extraño ingrese código en la aplicación y acceda a los ficheros físicos del sistema de
archivos del host servidor. También protege al equipo de troyanos JSP, Servlets,
beans y tags asociados.
Existen una serie de permisos sobre las clases que son usados para definir
permisos de carga de clases en Tomcat. Hay varias clases de permisos que son parte
estándar de la JDK, pero el desarrollador también puede crear sus propios permisos
para el acceso a las aplicaciones web.
Entre los permisos estándares que se tienen, se cuenta con:
java.util.PropertyPermission – controla el acceso, lectura y escritura a
las propiedades de la máquina virtual de Java.
 java.lang.RuntimePermission – controla el uso de funciones tales
como exit() o exec() a componentes de la JRE y a paquetes de aplicaciones.
 java.io.FilePermission – controla el acceso de lectura, escritura y
ejecución de archivos o directorios.
 java.net.SocketPermission – controla el uso de sockets de red.
 java.net.NetPermission – controla el uso de conexiones de red
multicast.
 java.lang.reflect.ReflectPermission – controla el uso y construcción de
introspección de clases.
 java.security.SecurityPermission – controla el acceso a métodos de
seguridad.
 java.security.AllPermission – permite obtener el acceso a todos los
permisos, como si no se estuviera utilizando SecurityManager.

Para configurar los permisos solo hace falta realizar las configuraciones sobre
dichos archivos, y cuando se cargan en el servidor los mismos se encuentran
establecidos. Esto hace referencia a permisos estándares.
Por otra parte, se tienen los permisos definidos por el usuario, para ello Tomcat
utiliza una clase de manejo de permisos personalizada y denominada
org.apache.naming.JndiPermission. Esta clase permite gestionar los permisos de
lectura a los archivos que manejan recursos JNDI. Un “*” puede ser usado para
matchear cualquier archivo de recurso JNDI con los permisos de tipo grant. De esta
manera, se puede incluir dentro del archivo de políticas, la siguiente sentencia:
Permisión org.apache.naming.JndiPermission “jndi://localhost/examples/*”.
Esta sentencia debe ser generada dinámicamente para cada aplicación web que
sea desplegada de modo de solamente permitir el acceso a recursos estáticos de la
aplicación y no dar permisos de lectura de otro tipo de archivos.
7
Applet: es una aplicación Java que puede correr desde un navegador web.
Apache TomCat 6.0.32
19
También Tomcat crea en forma dinámica los siguientes permisos:
permission java.io.FilePermission "** your application context**", "read";
permission java.io.FilePermission
"** application working directory**", "read,write";
permission java.io.FilePermission
"** application working directory**/-", "read,write,delete";
En donde **your application context** equivale al directorio o archivo WAR donde
la aplicación ha sido desplegada y **application working directory** es el directorio
temporal provisto a la aplicación de acuerdo a la especificación de los servlets.
16. Políticas de Seguridad en Apache Tomcat
El servidor de aplicaciones también cuenta con un archivo donde se encuentran
escritas todas las políticas de seguridad que vienen definidas por defecto, ello se
encuentra en el fichero ubicado en $CATALINA_BASE/conf/catalina.policy. El
mismo contiene permisos referentes a código del sistema, código fuente del contendor
de servlets Catalina, y permisos web sobre la aplicación.
Sin embargo, dicho archivo puede ser editado para que el administrador del
servidor pueda incorporar sus propios privilegios. Las entradas en el archivo tienen la
forma de:
// Example policy file entry
grant [signedBy <signer>,] [codeBase <code source>] {
permission <class> [<name> [, <action list>]];
};
Las entradas signedBy y codebase son opcionales. CodeBase toma la forma de
una URL, de un archivo usado en las propiedades ${java.home} y ${catalina.home}
para proteger los directorios contenidos en las mismas de acuerdo a los privilegios
indicados dentro de la entrada.
17. Protección de Paquetes en Apache Tomcat
También se puede configurar permisos de acceso a los paquetes internos de
tomcat. Ello se hace editando el archivo de Propiedades por Defecto, localizado en
$CATALINA_BASE/conf/catalina.properties. Luego de realizar las configuraciones
correspondientes, se debe reiniciar el servidor.
El archivo posee las siguientes líneas:
#
# List of comma-separated packages that start with or equal this string
# will cause a security exception to be thrown when
# passed to checkPackageAccess unless the
# corresponding RuntimePermission ("accessClassInPackage."+package) has
20
Apache TomCat 6.0.32
# been granted.
package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,
org.apache.jasper.
#
# List of comma-separated packages that start with or equal this string
# will cause a security exception to be thrown when
# passed to checkPackageDefinition unless the
# corresponding RuntimePermission ("defineClassInPackage."+package) has
# been granted.
#
# by default, no packages are restricted for definition, and none of
# the class loaders supplied with the JDK call checkPackageDefinition.
#
package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,
org.apache.tomcat.,org.apache.jasper.
18. Iniciar Apache Tomcat con SecurityManager
Cuando se ha configurado las políticas y privilegios de seguridad por parte del
administrador del sistema, se debe reiniciar el servidor para que habilite dichas
opciones. Ello se lleva a cabo mediante la siguiente línea:
%CATALINA_HOME%\bin\catalina start -security
$CATALINA_HOME/bin/catalina.sh start -security
(Windows)
(Linux)
19. Problemas Comunes que pueden presentarse
1. El primer problema que puede presentarse es el número de puerto del servidor.
Cuando se lo instala, el puerto de escucha del servidor viene configurado en 8080.
Pero en el caso donde se esté instalando una nueva instancia del mismo, se debe
cambiar dicho número y tratar de seleccionar alguno que se encuentre disponible y no
esté reservado para algún tipo de proceso. Dicha configuración se lleva a cabo en el
archivo /conf/server.xml.
2. Otro problema, que se da cuando se instala el servidor sobre sistemas
operativos obsoletos, como ser Windows 95,98 o ME es el mensaje de error “Out of
environment space”. Eso viene dado por el uso de memoria. Para solucionarlo, se
debe hacer click derecho sobre los ficheros STARTUP.BAT y SHUTDOWN.BAT y
cambiar el valor de Entorno Inicial a 4096.
3. Otro problema es el mensaje “The ‘localhost’ machine isn’t found”, esto significa
que el equipo se esta conectando mediante un proxy. En ese caso hay que asegurarse
que la configuración del proxy no este bloqueando el acceso a localhost.
Descargar