Beruflich Dokumente
Kultur Dokumente
Apache Tomcat 6
Nº 2
Módulo 1
Introducción
Objetivos
Nº 3
El proyecto Apache
Nº 4
Organización sin ánimo de lucro fundada en
1999 cuyo objetivo es facilitar el desarrollo de
proyecto s de software libre
Tomcat se ha desarrollado en el marco de la
Instalación y Administración de Apache Tomcat
ASF
Proyectos de la ASF:
Servidor Web Apache
Xerces: parser XML Java/C++
Ant: el sistema de construcción estándar de
facto en Java
Jakarta
Nº 5
Jakarta y Tomcat
JMeter
Log4j
Struts
Hoy día Tomcat es un proyecto de alto nivel
Nº 6
La licencia Apache
Nº 7
Las diferentes tecnologías Java
móviles
Java para
aplicaciones de
escritorio
JME
JSE
JEE
Nº 8
Java Enterprise Edition (JEE)
Nº 9
Arquitectura multicapa (I)
Presentación
Persistencia
Nº 10 Lógica de Negocio
Arquitectura multicapa (II)
Ventajas
Mantenible
Sistemas separados por responsabilidades
Fácil añadir / modificar funcionalidades
Instalación y Administración de Apache Tomcat
Nº 11
Arquitectura multicapa de la JEE
Instalación y Administración de Apache Tomcat
Nº 12
Los contenedores JEE (I)
Nº 13
Los contenedores JEE (II)
Nº 14
Ventajas del uso de contendores
Construyendo desde cero
Tareas del desarrollador
Lógica de Negocio
Persistencia
Gestión de transacciones
Multi-threading
Seguridad
Instalación y Administración de Apache Tomcat
Red
Publicación de servicios
Nº 15
Servidores de aplicaciones (I)
Nº 16
Instalación y Administración de Apache Tomcat
Nº 17
Servidores de aplicaciones (II)
¿Y Tomcat?
Nº 18
¿Qué hemos visto?
Nº 19
Instalación y Administración de Apache Tomcat
Nº 20
Módulo 2
Instalación de Tomcat
Objetivos
Instalar Tomcat
Instalación y Administración de Apache Tomcat
Instalar Ant
Nº 21
Instalar la JVM
Nº 22
Instalación de la JVM en Windows (I)
Descargarla de http://java.sun.com
Nº 23
Instalación y Administración de Apache Tomcat
Nº 24
Instalación de la JVM en Windows (II)
Descargar Tomcat
Conectarse a http://tomcat.apache.org
Ir a la zona de descargas y elegir la versión
correspondiente:
Instalación y Administración de Apache Tomcat
Nº 25
Instalar mediante el asistente
Nº 26
Establecer las variables de entorno
Nº 27
Probar la instalación
Nº 28
Instalación y Administración de Apache Tomcat
Nº 29
Comprobar la instalación
La jerarquía de directorios de Tomcat
Nº 30
Problemas típicos (I)
Nº 31
Problemas típicos (II)
Nº 32
¿ Por qué Ant?
Nº 33
Instalar Ant y las bibliotecas de Tomcat
Nº 34
¿Qué hemos visto?
Nº 35
Instalación y Administración de Apache Tomcat
Nº 36
Módulo 3
Nº 37
Web sites y aplicaciones web
Nº 38
Ejecución de CGI’s
Servidor
CGI
Servidor
web
Nº 39
Ejecución de servlets
Servidor
Petición
Thread
Instalación y Administración de Apache Tomcat
Petición
Thread Servlet
Petición
Thread
Servidor
web Contenedor web
Nº 40
Ventajas de modelo de servlets
Nº 41
Fundamentos de los Servlets
Se encarga de lo siguiente:
Instalación y Administración de Apache Tomcat
Nº 42
Fundamentos de las JavaServer Pages
Nº 43
Ventajas de la tecnología JSP
Nº 44
Inconvenientes de la tecnología JSP
Nº 45
El patrón MVC (modelo-vista-controlador)
Instalación y Administración de Apache Tomcat
Nº 46
Struts
El framework proporciona
Un componente que actúa de controlador
Clases de conveniencia
Archivos de configuración
Nº 47
¿Por qué vale la pena usar Struts?
Controladores
Componentes que constituyen el modelo
Vistas
Facilita
Definir el flujo de navegación
Verificar y procesar la entrada de datos del usuario
La gestión de errores
Nº 48
Estructura de una aplicación web (I)
Ejercicio M3E1
Nº 49
Estructura de una aplicación web (II)
Nº 50
¿Qué hemos visto?
Nº 51
Instalación y Administración de Apache Tomcat
Nº 52
Módulo 4
Configurar Tomcat
Objetivos
Nº 53
Arquitectura de Tomcat (I)
Nº 54
Arquitectura de Tomcat (II)
Servidor
Servicio
Motor
Conector
Logger Válvula Realm
Instalación y Administración de Apache Tomcat
Host
Logger Válvula Realm
Contexto
Válvula
Realm Encapsulador
Nº 55
Componentes de Tomcat (I)
Nº 56
Componentes de Tomcat (II)
Nº 57
Componentes de Tomcat (III)
Nº 58
Configuración por arquitectura
Nº 59
El server.xml por defecto
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
</Engine>
</Service>
</Server>
Nº 60
Ficheros de configuración básicos (I)
Residen en <TOMCAT_HOME>/conf
Nº 62
Ficheros de configuración básicos (III)
Nº 63
server.xml: Componente Server
Instalación y Administración de Apache Tomcat
Ejercicio M4E1
Nº 64
Instalación y Administración de Apache Tomcat
Nº 65
server.xml: Subelementos de Server
Instalación y Administración de Apache Tomcat
Nº 66
server.xml: Componente Service
Los modos de operaciones de Tomcat
Servidor de aplicaciones
Tomcat requiere un servidor web que actúe de frontend
(Apache, IIS u otro)
El contenido estático es servido por el frontend
Instalación y Administración de Apache Tomcat
Nº 67
server.xml: Connector
Nº 68
Instalación y Administración de Apache Tomcat
Nº 69
server.xml: Componente Engine
Componente Realm
Nº 70
Componente Host
Web App 1 Web App 2 Web App 1 Web App 2 Web App 1 Web App 2
Nº 71
server.xml: Componente Host
Instalación y Administración de Apache Tomcat
Ejercicio M4E2
Nº 72
context.xml
Se alojan en
<CATALINA_HOME>/conf/<nombre_motor>/<nombre_host>
Nº 73
Descriptor de despliegue: web.xml
El descriptor <TOMCAT_HOME>/conf/web.xml es un
Instalación y Administración de Apache Tomcat
Ejercicio M4E3
Nº 74
¿Qué hemos visto?
Nº 75
Instalación y Administración de Apache Tomcat
Nº 76
Módulo 5
Nº 77
Desplegar una aplicación manualmente
Nº 78
Tomcat Manager
activas
Listar recursos JNDI
Elaborar roles de seguridad
Iniciar una aplicación detenida
Detener una aplicación
Replegar una aplicación
Mostrar estadísticas de sesión
Nº 79
Permitir el acceso al manager
Ejercicio M5E1
Nº 80
Instalación y Administración de Apache Tomcat
Nº 81
La pantalla principal del manager
Ajustar la configuración del Manager
Nº 82
Instalación y Administración de Apache Tomcat
Nº 83
Manager: mostrar el estado del servidor
Instalación y Administración de Apache Tomcat
Nº 84
Manager: gestionar aplicaciones (I)
Manager: gestionar aplicaciones (II)
Nº 85
Manager: desplegar aplicaciones
Instalación y Administración de Apache Tomcat
Ejercicio M5E2
Nº 86
Controlar aplicaciones mediante Ant
Nº 87
Importar los tasks mediante taskdef
build.xml
Nº 88
Importar los tasks mediante un properties
tomcat-tasks.properties
deploy=org.apache.catalina.ant.DeployTask
list=org.apache.catalina.ant.ListTask
status=org.apache.catalina.ant.JKStatusUpdateTask
reload=org.apache.catalina.ant.ReloadTask
remove=org.apache.catalina.ant.RemoveTask
resources=org.apache.catalina.ant.ResourcesTask
Instalación y Administración de Apache Tomcat
start=org.apache.catalina.ant.StartTask
stop=org.apache.catalina.ant.StopTask
undeploy=org.apache.catalina.ant.UndeployTask
../..
build.xml
../..
<path id=“tomcat.classpath”>
<fileset dir=“${tomcat.home}/lib”>
<include name=“*.jar”/>
</fileset>
</path>
<taskdef file=“tomcat-tasks.properties” classpathref=“tomcat.classpath”/>
../..
Nº 89
Importar los tasks desde el script
predefinido
Desde la versión de Tomcat 5.5 existe un
script que hace todo lo necesario
Instalación y Administración de Apache Tomcat
build.xml
Nº 90
Usar los tasks (I)
Nº 91
Usar los tasks (II)
<target name="deploy">
<deploy url="${tomcat.manager.url}" username="${tomcat.username}"
password="${tomcat.password}" path="${context.path}"
war="${war.file}" update="true"/>
</target>
Instalación y Administración de Apache Tomcat
<target name="reload">
<reload url="${tomcat.manager.url}" username="${tomcat.username}"
password="${tomcat.password}" path="${context.path}"/>
</target>
<target name="start">
<start url="${tomcat.manager.url}" username="${tomcat.username}"
password="${tomcat.password}" path="${context.path}"/>
</target>
<target name="stop">
<stop url="${tomcat.manager.url}" username="${tomcat.username}"
password="${tomcat.password}" path="${context.path}"/>
</target>
Ejercicio M5E3
Nº 92
Gestión mediante peticiones HTTP (I)
{nombre_host}:{puerto}/manager/{comando}?{params}
Nº 93
Gestión mediante peticiones HTTP (II)
Nº 94
Petición HTTP: listar aplicaciones
desplegadas
Instalación y Administración de Apache Tomcat
Nº 95
¿Qué hemos visto?
Nº 96
Instalación y Administración de Apache Tomcat
Nº 97
Módulo 6
Características avanzadas
Objetivos
Nº 98
¿Por qué sesiones persistentes?
Nº 99
Configurar las sesiones persistentes
situamos en el <TOMCAT_HOME>/conf/context.xml
Nº 100
Instalación y Administración de Apache Tomcat
Nº 101
El elemento Manager
Ejemplo de configuración
<Context>
<Manager className="org.apache.catalina.session.PersistentManager"
saveOnRestart="true"
maxActiveSession="3"
Instalación y Administración de Apache Tomcat
minIdleSwap="0"
maxIdleSwap="60"
maxIdleBackup="0">
<Store className="org.apache.catalina.session.FileStore"/>
</Manager>
</Context>
Ejercicio M6E1
Nº 102
¿Qué es JNDI?
JNDI
Nº 103
¿Qué recursos se ofrece JNDI?
Directorios de la organización
Servidores
Impresoras
Otros objetos o recursos
Nº 104
Tomcat y JNDI (I)
recursos preconfigurados
Nº 105
Tomcat y JNDI (II)
Búsqueda JNDI
Aplicación Web
Recurso devuelto
Instalación y Administración de Apache Tomcat
Leer y emular
Recurso JNDI funcionalidad JNDI
Servidor
preconfigurado Aplicación Web
Tomcat
en server.xml
Aplicación Web
Nº 106
Ámbito de config. de recursos JNDI
Nº 107
Subelementos JNDI soportados
Nº 108
Atributos del elemento Environment
Instalación y Administración de Apache Tomcat
Ejercicio M6E2
Nº 109
JavaMail y JNDI
Nº 110
Instalar JavaMail
Descargar mail.jar de
http://java.sun.com/products/javamail/downloads/index.html
Descargar activation.jar de
Instalación y Administración de Apache Tomcat
http://java.sun.com/products/javabeans/jaf/index.jsp
Nº 111
Configurar JNDI para JavaMail
<Context>
<Resource name="mail/Session" auth="Container“
type="javax.mail.Session" />
<ResourceParams name="mail/Session">
<parameter>
<name>mail.smtp.host</name>
<value>localhost</value>
</parameter>
<parameter>
<name>mail.smtp.port</name>
<value>25</value>
</parameter>
</ResourceParams>
</Context>
Ejercicio M6E3
Nº 112
¿Qué hemos visto?
Nº 113
Instalación y Administración de Apache Tomcat
Nº 114
Módulo 7
Entender JDBC
Nº 115
¿Qué es JDBC?
Nº 116
Diagrama básico de JDBC
Aplicación Java
Llamadas JDBC
Instalación y Administración de Apache Tomcat
Librería JDBC
Independiente del SGBD
Nº 117
Misión de las operaciones JDBC
Nº 118
Etapas en la programación JDBC
Nº 119
Pool de conexiones
Nº 120
Funcionamiento de un pool
devuelta al pool
1.- Solicita conexión
Web SGBD
3.- Cerrar conexión lógica
Nº 121
Emulación JNDI y los pool en Tomcat 6
Tomcat ofrece
Acceder a las fuentes de datos JDBC mediante
una búsqueda JNDI
Utilizar el pool propio de Tomcat (DBCP
Instalación y Administración de Apache Tomcat
JakartaComons)
Nº 122
Configurar una conexión JNDI
Nº 123
La etiqueta Resource
Instalación y Administración de Apache Tomcat
Ejercicio M7E1
Nº 124
¿Qué hemos visto?
Nº 125
Instalación y Administración de Apache Tomcat
Nº 126
Conectores
Módulo 8
Objetivos
actuando de front-end
Nº 127
Los modos de operaciones de Tomcat
Servidor de aplicaciones
Tomcat requiere un servidor web que actúe de frontend
(Apache, IIS u otro)
El contenido estático es servido por el frontend
Instalación y Administración de Apache Tomcat
Nº 128
¿Qué son los conectores?
Nº 129
Conectores HTTP disponibles
en Java
Nº 130
Conector HTTP/1.1
<Conector port=“8080”
protocol=“HTTP/1.1”
maxThreads=“150”
connectionTimeout=“2000”
redirectPort=“8443” />
Nº 131
Instalación y Administración de Apache Tomcat
Nº 132
Atributos del conector HTTP/1.1 (I)
Instalación y Administración de Apache Tomcat
Nº 133
Atributos del conector HTTP/1.1 (II)
Conector HTTP/1.1 con SSL
<Conector port=“8443”
protocol=“HTTP/1.1”
maxThreads=“150”
scheme=“https”
secure=“true”
clientAuth=“false”
sslProtocol=“TLS” />
Nº 134
Atributos HTTP/1.1 relacionados con SSL
Instalación y Administración de Apache Tomcat
Nº 135
El conector NIO
<Conector port=“8080”
protocol=“org.apache.coyote.http11.Http11NioProtocol”
maxThreads=“150”
connectionTimeout=“20000”
redirectPort=“8443” />
Nº 136
¿Qué es APR?
Nº 137
¿Por qué es más eficiente y escalable?
Nº 138
Activar APR (I)
Nº 139
Activar APR (II)
<Conector port=“8080”
Instalación y Administración de Apache Tomcat
protocol=“org.apache.coyote.http11.Http11AprProtocol”
maxThreads=“150”
connectionTimeout=“20000”
redirectPort=“8443” />
Ejercicio M8E1
Nº 140
¿Standalone o sevidor de front-end?
Nº 141
Configuración front-end con Apache
AJP
En el lado de Apache son módulos escritos en
C/C++
En el lado Tomcat son conectores AJP
escritos en Java
Nº 142
Arquitectura de la integración
Protocolo Protocolo
HTTP AJP
Nº 143
Características de AJP1.3
Soporte de clústeres
Nº 144
Módulos disponibles para Apache (I)
Dos opciones
mod_jk: el módulo “tradicional”
mod_proxy: módulo estándar de Apache que
en sus últimas versiones soporta AJP
Instalación y Administración de Apache Tomcat
Nº 145
Módulos disponibles para Apache (II)
Versión de Apache
mod_jk Sí Sí Sí
Nº 146
mod_jk: Concepto de worker
un worker
Nº 147
mod_jk: El fichero workers.properties (I)
Contiene
Descripción de la lista de workers
Descripción de cada instancia de worker de la
lista anterior
Nº 148
mod_jk:El fichero workers.properties (II)
workers.properties
worker.testworker1.type = ajp13
worker.testworker1.host = 192.168.1.128
worker.testworker1.port = 9009
worker.testworker1.connection_pool_size = 5
worker.testworker1.connection_pool_timeout = 300
worker.testworker2.type = …
…
Nº 149
Instalación y Administración de Apache Tomcat
Nº 150
mod_jk: Propiedades de los workers
mod_jk: Tipos de worker
Nº 151
mod_jk: Configuración de Apache
Configurar el wokers.properties
Nº 152
mod_proxy: Configuración de Apache
Ejercicio M8E2
Nº 154
¿Qué hemos visto?
Nº 155
Instalación y Administración de Apache Tomcat
Nº 156
Seguridad
Módulo 9
Objetivos
aplicaciones Web
Nº 157
Verificar la integridad de la descarga
Nº 158
Eliminar las aplicaciones por defecto
manager y host-manager
Por su funcionalidad (tareas administrativas) presentan
el mayor riesgo
Deberían ser eliminadas por completo
Si fueran necesarias:
Cambiar el mecanismo de autenticación de BASIC a un
tipo más seguro
Permitir sólo el acceso de direcciones específicas
Elegir un usuario y password difícil de adivinar
Nº 159
Cambiar el comando de SHUTDOWN
Nº 160
Ejecutar Tomcat con una cuenta restringida
Nº 161
Instalación y Administración de Apache Tomcat
Nº 162
Gestor de servicios
Asegurar el sistema de ficheros (I)
En Windows
sólo podremos restringir acceso a ficheros si
con NTFS (con FAT32 no hay nada que hacer)
NTFS se basa en listas de control de acceso:
Instalación y Administración de Apache Tomcat
Nº 163
Asegurar el sistema de ficheros (II)
<TOMCAT_HOME>/lib
<TOMCAT_HOME>/webapps (aunque esto inhabilita el
uso del manager como herramienta para desplegar
nuevas webapps)
Conceder permisos de lectura y escritura
sobre <TOMCAT_HOME>/conf
Nº 164
Utilizar el gestor de seguridad de Java
Nº 165
Proteger aplicaciones web
Nº 166
Autenticación y Realm
de autenticación
Nº 167
Mecanismos de autenticación
BASIC
DIGEST
Instalación y Administración de Apache Tomcat
Formularios
Nº 168
Mecanismo BASIC
Problemas
base64 no es un mecanismo de cifrado seguro
Los navegadores guardan en caché las
credenciales
Nº 169
Mecanismo DIGEST
Problemas
La contraseña original debe almacenarse en algún lugar
(habrá que proteger adecuadamente este recurso)
El navegador guarda en caché las credenciales
Nº 170
Mecanismo de formularios
Problema
Sigue habiendo dependencia de usuarios y
credenciales que pueden obtenerse por fuerza
bruta o ingeniería social
Nº 171
Mecanismo de certificados digitales
Nº 172
Configurar la aplicación web
web.xml
…
<security-constraint>
<display-name>todo</display-name>
<web-resource-collection>
Instalación y Administración de Apache Tomcat
<web-resource-name>TodaLaAplicacion</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>administrador</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>MiRealm</realm-name>
</login-config>
<security-role>
<role-name>administrador</role-name>
</security-role>
….
Nº 173
Configurar los Realm en Tomcat
Nº 174
MemoryRealm
mis-usuarios.xml
<tomcat-users>
<role rolename="administrador"/>
<user username="admin" password="admin2" roles="administrador"/>
</tomcat-users>
context.xml
<Context path="/M3E1">
<Realm
className="org.apache.catalina.realm.MemoryRealm"
pathname="conf/mis-usuarios.xml" />
</Context>
Ejercicio M9E1
Nº 175
JDBCRealm
user_roles
users
PK,FK1 login
PK login
PK role
Instalación y Administración de Apache Tomcat
password
<Realm className=“org.apache.catalina.realm.JDBCRealm”
driverName=“com.mysql.jdbc.Driver”
connectionURL=“jdbc:mysql://localhost/autoridad”
connectionName=“tomcat”
connectionPassword=“tomcat”
userTable=“users”
userNameCol=“login” userCredCol=“password”
userRoleTable=“user_roles”
roleNameCol=“role”
digest=“md5”/>
Ejercicio M9E2
Nº 176
Cifrado SSL
Nº 177
Añadir soporte SSL a Tomcat
Nº 178
Preparar el almacén de claves
Nº 179
Configuración de Tomcat
<Connector
port=“8443” scheme=“https” secure=“true” SSLEnabled=“true”
keystoreFile=“store” sslProtocol=“TLS”
keystorePass=“clave-segura” />
<Connector
protocol=“org.apache.coyote.http11.HttpAprProtocol”
port=“8443” scheme=“https” secure=“true” SSLEnabled=“true”
SSLCertificateFile=“/mycertdir/server.crt”
SSLCertificateKeyFile=“/mycertdir/ssl/server.pem” />
Nº 180
Configurar la webapp para que use SSL
<security-constraint>
<display-name>todo</display-name>
<web-resource-collection>
<web-resource-name>TodaLaAplicacion</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>administrador</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Ejercicio M9E3
Nº 181
¿Qué hemos visto?
Nº 182
Instalación y Administración de Apache Tomcat
Nº 183
Módulo 10
Alojamiento Compartido
Objetivos
Nº 184
¿Qué es el alojamiento compartido?
Nº 185
Alojamiento virtual
Tipos
Basado en IP: cada dominio web necesita
tener una dirección IP diferente que es lo que
usa el servidor para diferenciar peticiones
Basado en nombres: los dominios pueden
compartir IP y las peticiones se diferencian por
nombre
Nº 186
Alojamiento virtual basado en IP
Nº 187
Alojamiento virtual basado en nombres
Nº 188
Configurar Tomcat para alojamiento virtual
basado en nombres
Está disponible desde las primeras versiones
Consiste en añadir nuevas entradas Host a
nivel de Engine
Instalación y Administración de Apache Tomcat
server.xml
Nº 189
Configurar Tomcat para alojamiento virtual
basado en IP
Es una característica nueva desde la 5.5
La configuración es prácticamente la misma excepto en que
activamos un atributo a nivel de conector que fuerza a ignorar la
cabecera Host de HTTP/1.1 con lo que sólo se usará la IP
Instalación y Administración de Apache Tomcat
server.xml
<Connector port=“8080” protocol=“HTTP/1.1” redirectPort=“8443”
useIPVHosts=“true”>
…
<Engine name=“Catalina” defaultHost=“dominio1.com” debug=“0”>
…
<Host name=“dominio1.com” debug=“0”
autoDeploy=“true” unpackWar=“true”
appBase=“/websites/dominio/webapps” />
Nº 190
Configuración con front-end y alojamiento
virtual
Apache también se puede configurar para
trabajar con los dos modos de alojamiento
virtual
Instalación y Administración de Apache Tomcat
Nº 191
Arquitectura en modo front-end
Apache Tomcat
de
Web
peticiones
Host Virtual 2
…
Módulo de Host Virtual
Host Virtual N
Nº 192
¿Qué hemos visto?
Nº 193