2. Irontec – Tomcat / JBoss
Tomcat
● Tomcat es otro proyecto de la Apache Foundation
● Es un servidor Web con soporte de Servelts y JSPs
http://tomcat.apache.org/
● Suele utilizarse en conjunto con Apache Web Server
● Tomcat está escrito en Java, por lo que funciona en
cualquier sistema operativo con máquina virtual
2
3. Irontec – Tomcat / JBoss
Servlets
● Una de las funcionalidades más comunes de un
servlet es generar páginas web dinámicas
● Servlet deriva de applet. Un applet es un programa
Java que se ejecuta en el lado cliente. Servlet, por
su parte, en el lado servidor
● Nuestro servidor Tomcat, hará uso de los servlets
que en el instalemos para generar páginas
dinámicas
http://es.wikipedia.org/wiki/Java_Servlet
3
4. Irontec – Tomcat / JBoss
Servlets
● El ciclo de vida de un Servlet se divide en los
siguiente puntos:
– El cliente solicita una petición a un servidor vía URL.
– El servidor recibe la petición.
– Si es la primera, se utiliza el motor de Servlets para
cargarlo y se llama al método init().
– Si ya está iniciado, cualquier petición se convierte en un
nuevo hilo. Un Servlet puede manejar múltiples
peticiones de clientes.
– Se llama al método service() para procesar la petición
devolviendo el resultado al cliente.
– Cuando se apaga el motor de un Servlet se llama al
método destroy(), que lo destruye y libera los
recursos abiertos.
4
5. Irontec – Tomcat / JBoss
JSP
● JSP es JavaServer Pages
● Es otra tecnología Java que permite generar
contenido dinámico web
● Con JSP podemos hacer lo mismo que un Servlet y
viceversa
● JSP es una página Web con etiquetas especiales y
código Java incrustado, mientras que un servlet es
un programa Java puro que recibe peticiones y
genera a partir de ellas una página web
5
6. Irontec – Tomcat / JBoss
Instalación
● Para instalar Tomcat es necesario dos elementos
básicos
– Tomcat
– ¡Java!
● Eso es todo :)
● Desde la web oficial es posible descargarse distintas
versiones. En el momento de escribir este manual,
la última versión es:
6.0.18
6
7. Irontec – Tomcat / JBoss
Instalación
● Descargamos la última versión y la descomprimimos
● Es posible descargar el binario (precompilado) o el
código fuente
● Para GNU/Linux descargamos la version binaria en
formato tar.gz
● El fichero, una vez descomprimido, nos crea una
carpeta con todo lo necesario para funcionar
● Con esto ya tenemos el primero de los dos
requisitos
7
8. Irontec – Tomcat / JBoss
Instalación
● Dentro de la carpeta bin vemos dos scripts
● Startup arranca tomcat. Shutdown para tomcat
● Si lo ejecutamos desde la consola podremos ver los
mensajes de error
Neither the JAVA_HOME nor the JRE_HOME
environment variable is defined
At least one of these environment
variable is needed to run this program
8
9. Irontec – Tomcat / JBoss
Instalación
● Es necesario instalar Java Runtime
● Podemos hacerlo bajando la última versión de la
web de Sun o desde el gestor de paquetes de
GNU/Linux
● El nombre del paquete en cuestión es:
sun-java5-jre
9
10. Irontec – Tomcat / JBoss
Instalación
root@irontec-desktop:~# apt-get install sun-java5-
jre
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes extras:
gsfonts-x11 java-common odbcinst1debian1 sun-
java5-bin unixodbc xutils-dev
Paquetes sugeridos:
equivs sun-java5-plugin ia32-sun-java5-plugin sun-
java5-fonts libmyodbc odbc-postgresql libct1
Se instalarán los siguientes paquetes NUEVOS:
gsfonts-x11 java-common odbcinst1debian1 sun-
java5-bin sun-java5-jre unixodbc xutils-dev
0 actualizados, 7 se instalarán, 0 para eliminar y 0
no actualizados.
10
11. Irontec – Tomcat / JBoss
Instalación
● Una vez instalado ya tenemos JRE y podemos
arrancar Tomcat
irontec@irontec-desktop:~/apache-tomcat-6.0.18/bin$
./startup.sh
Using CATALINA_BASE: /home/irontec/apache-tomcat-6.0.18
Using CATALINA_HOME: /home/irontec/apache-tomcat-6.0.18
Using CATALINA_TMPDIR: /home/irontec/apache-tomcat-
6.0.18/temp
Using JRE_HOME: /usr
11
12. Irontec – Tomcat / JBoss
Tomcat
● Tomcat por defecto estucha en los puertos:
– 8080 (puerto por defecto de Tomcat)
– 8005 (puerto para apagar Tomcat)
– 8009 (conector AJP)
● Si entramos en http://direccion.ip:8080 podremos
ver la página principal de Apache Tomcat :)
● ¡Ya tenemos Tomcat instalado!
12
13. Irontec – Tomcat / JBoss
Tomcat
● Los ficheros de Tomcat se encuentran en la carpeta
conf
● Cambiad el puerto por defecto de 8080 a 81
● Intentad entrar a la gestión del Manager ¿Se
puede? Solucionadlo :)
13
14. Irontec – Tomcat / JBoss
Tomcat
● Desde la gestión del manager es posible desplegar
nuevos Servlets
● También es posible parar, arrancar los servlets
implementados
● Los podemos descargar en nuestro ordenador
personal y desplegarlos al servidor desde el
navegador, sin necesidad de toca ni un solo fichero
de configuración
http://tomcat.apache.org/tomcat-6.0-doc/appdev/sample/
14
15. Irontec – Tomcat / JBoss
Tomcat
● El conector de Apache con Tomcat nos permite unir
las dos aplicaciones
● Podemos instalarlo desde el gestor de paquetes
libapache2-mod-jk
● Una vez instalado será necesario habilitar el módulo
15
16. Irontec – Tomcat / JBoss
Tomcat
● Tomcat puede actuar por si solo como servidor web
● Solemos unir Apache y Tomcat por temas de
rendimiento. Apache es más rapido sirviendo
páginas estáticas que Tomcat. La idea suele ser
dejar a Apache servir las estáticas y Tomcat las
dinámicas
● La union se hace mediante el módulo instalado
anteriorment
16
17. Irontec – Tomcat / JBoss
Tomcat
● Otras razones para usar Apache y Tomcat:
– Apache puede actuar como frontend para distintas
instancias de Tomcat. Si un Tomcat se cae, Apache
lo ignora y va a los siguientes
– Apache puede actuar de proxy intermedio, de forma
que los usuarios solo tienen acceso a el y no acceso
directo a Tomcat
– Apache soporta facilmente CGIs, PHP, perl, etc.
– Apache dispone de muchos más modulos, como
mod_authz, mod_rewrite, etc.
17
18. Irontec – Tomcat / JBoss
Tomcat
● Chuleta rápida:
http://tomcat.apache.org/connectors-doc/generic_howto/quick.html
● Es necesario crear un fichero workers.properties
● Un Worker es una instancia de Tomcat que está
esperando para ejecutar un servlet
● En el fichero debemos definir las instancias a las
que Apache tendrá acceso
18
19. Irontec – Tomcat / JBoss
Tomcat
# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
● Resumiendo
– El worker se llama “worker1”
– Protocolo ajp versión 13
– Escucha en localhost
– Puerto 8009
19
20. Irontec – Tomcat / JBoss
Tomcat
● Hay que decirle a apache donde se encuentra el
fichero de configuración del worker. En httpd.conf
JkWorkersFile /etc/apache2/workers.properties
JkLogFile /var/log/mod_jk.log
JkLogLevel info
JkMount /examples/ worker1
● Resumiendo:
– El workerfile está en esa ruta
– Los logs van a /var/log
– Cada vez que accedamos a /examples/ lo redirigrá al
tomcat worker1
20
21. Irontec – Tomcat / JBoss
Tomcat
● JKMount se puede aplicar de forma global, pero
este no se replica en los VirtualHost que tenemos
configurados.
● Apache suele traer un VirtualHost por defecto. Para
que copie el JPMount global se le debe indicar la
directiva
JkMountCopy on
● Se deberá poner en todos aquellos VirtualHost que
deseamos tener el JkMount global
● O si no, JkMountCopy all :D
21
23. Irontec – Tomcat / JBoss
Jboss
● Jboss es el servidor de aplicaciones de Red Hat,
completamente implementado en Java. EJB/JMS
http://www.jboss.org/
● Es completamente libre
● Multiplataforma, allí donde tengamos máquina
virtual (y recursos suficientes) podremos tener
Jboss
23
24. Irontec – Tomcat / JBoss
Jboss
● A diferencia de Tomcat, que solo es un contenedor
de Servlets, Jboss es un servidor de aplicaciones
completo.
● Soporta la API de desarrollo de aplicaciones
empresariales EJB
http://es.wikipedia.org/wiki/EJB
● Soporta JMS (servicio de mensajería Java)
http://es.wikipedia.org/wiki/JMS
24
25. Irontec – Tomcat / JBoss
Jboss
● Jboss escucha también en el puerto 8080, por lo
que habrá que tener cuidado si tenemos un proxy,
Oracle o Tomcat instalados
● La instalación es igual que Tomcat, descargar,
descomprimir y usar
● Será necesario instalar el JDK de Sun
http://www.jboss.org/jbossas/downloads/
25
26. Irontec – Tomcat / JBoss
Jboss
● Jboss incluye Tomcat 5.5, por lo que el puerto 8009
estará abierto
● Se recomienda no instalar Jboss y Tomcat
separado, ya que estaremos instalando dos
versiones de Tomcat que se pelearán por los
mismos puertos
● Para parar y arrancar Jboss tendremos los scripts
run.sh y shutdown.sh
26
27. Irontec – Tomcat / JBoss
Jboss
● Por defecto Jboss solamente escucha en la interfaz
loopback 127.0.0.1
● Si lo que deseamos es que el servicio sea accesible
desde fuera, será necesario arrancarlo escuchando
en cualquier interfaz
● ./run -b 0.0.0.0
● No suele ser necesario, ya que jboss o Tomcat
suelen ser accedidos desde Apache. La
comunicación es a través de 127.0.0.1
27
28. Irontec – Tomcat / JBoss
Jboss
● Jboss es completamente modular
● Esta funcionalidad se la ofrece la API JMX (Java
Management Extension) sobre la cual está contruida
● Permite gestionar y monitorizar una gran variedad
de componentes
● Jboss incluye una consola web que permite
interactuar con todos los módulos a golpe de ratón
http://es.wikipedia.org/wiki/JMX
28
29. Irontec – Tomcat / JBoss
Jboss
● Dentro de Jboss tenemos una serie de carpetas:
– Bin (scripts para controlar Jboos)
– Client (librerias usadas por el cliente remoto)
– Docs (documentación)
– Lib (librerias base de Jboss)
– Server (servicios hospedados)
● De las carpetas mostradas anteriormente, las más
importante serán Server y Bin
29
30. Irontec – Tomcat / JBoss
Jboss
● Dentro de server tenemos distintas configuraciones
– Minimal (lo mínimo para funcionar, como logging y
deployments)
– Default (la configuración por defecto, si no se especifica
otra. Lo mismo que minima, con opciones de
seguridad, servicios de transacción, etc.)
– Web (lo necesario para servir aplicaciones web)
– All (todo, todo y todo)
● Si se desea crear una configuración personaliza, se
pueden copiar una de esas carpetas con otro
nombre y comenzar a personalizarla
● Para indicar que server arrancar:
run.sh -c miconfiguración
30
31. Irontec – Tomcat / JBoss
Jboss
● Dentro de cada configuración de servidor tenemos
las siguientes carpetas:
– Conf (ficheros de configuración)
– Data (donde jboss guarda datos
– Deploy (aquí ponemos nuestros componentes o
aplicaciones. Se leen dinámicamente)
– Lib (librerias requeridas para esta configuración)
– Log (logs de esta configuración)
– Tmp (almacenamiento de ficheros temporales)
– Work (para cacheo JSP)
31
32. Irontec – Tomcat / JBoss
Jboss
● Vamos a crear nuestra propia aplicación para
Jboss :)
http://www.novell.com/coolsolutions/feature/14912.html
● Como siempre, un hola mundo.
32
33. Irontec – Tomcat / JBoss
Jboss
● Como Jboss usa por debajo Tomcat 5.5 en el puerto
8009, la configuración del conector es exactamente
igual
● Configurad el HelloWorld para que sea accesible
mediante Apache con el módulo JK.
33