Está en la página 1de 58

Curso de Jboss Application Server

Da 2

Revisin de Unidad 1
Que es JAVA? Que es JBOSS? Cmo es la estructura de directorios de Jboss? Cules son las diferentes instancias? Cmo es la estructura de directorios de una instancia?

Revisin de Unidad 1 - Respuestas


Que es JAVA?
Es un lenguaje de programacin orientado a objetos. Nos permite tener independencia de la plataforma para las aplicaciones que ejecutemos sobre l.

Que es JBOSS?
Es un Servidor de Aplicaciones J2EE open source que se ejecuta sobre java.

Revisin de Unidad 1 - Respuestas


Cmo es la estructura de directorios de Jboss?
Bin: scripts de inicio/parada y administracin. Client: archivos .JAR de aplicaciones cliente servidor. (Se puede borrar) Common: libreras comunes a todas las instancias. Docs: documentacin y archivos de configuracin de ejemplo (Data Sources) Server: Contiene todas las instancias del servidor.

Cules son las diferentes instancias?


All: Incluye todos los servicios posibles (clustering). Default: Instancia mas utilizada por desarrolladores. Minimal: Servicios mnimos (Micro container) permite implementar servicios desde cero. Standard: Sigue las normas del estndar J2EE. No proporciona agregados y mejoras de JBOSS. Web: Contiene servicios para aplicaciones web (Servlet y JSP). No cumple el estndar J2EE.

Revisin de Unidad 1 - Respuestas


Cmo es la estructura de directorios de una instancia?

Conf:: Archivos de configuracin ledos por el servidor de aplicaciones en el inicio (salvo jbosslog4j.xml) Data: Directorio utilizado por servicios para lograr persistencia (Ej. Hipersonic) Deploy: Directorio donde se ubican los archivos de aplicaciones por desplegar por Jboss. Deployers: Aplicaciones que realizan los despliegues. (jbossweb.deployer) Lib: Libreras especificas de cada instancias Log: Directorio por defecto de ubicacin de logs. | | Tmp: Directorio temporal de las aplicaciones que estn en ejecucin. Work: Carpeta temporal utilizada para compilar archivos JSP.

Revisin de Unidad 2
Como instalar Jboss / Prerrequisitos Cmo controlar Jboss?

Revisin de Unidad 2 - Respuestas


Como instalar Jboss / Prerrequisitos
Verificar version requerida de Java Definir la variable JAVA_HOME Instalar la java requerida Descomprimir Jboss

Cmo controlar Jboss?


./run.sh -c <nombre de instancia> -b <IP> ./shutdown.sh s jnp://localhost:1009

Revisin de Unidad 3
Archivos de Configuracin:
Run.conf Jboss-log4j.xml Loggin-config.xml *-ds.xml

Revisin de Unidad 3 - Respuestas


Archivo Run.conf Contiene todos los parmetros de configuracin de la instancia al momento del inicio:
-Xms256m tamao mnimo del heap para la jvm -Xmx512m tamao mximo del heap para la jvm
java.lang.OutOfMemoryError: requested 894664 bytes for

-XX:PermSize=512m tamao del espacio Perm.


java.lang.OutOfMemoryError: PermGen space

Revisin de Unidad 3 - Respuestas


Archivo Jboss-log4j.xml
Permite ajustar el nivel de log de una aplicacin o servicios. Archivo loggin-config.xml Contiene la lista de Security Domain utilizado para segurizar las aplicaciones. (Ej. La consola de administracin) Archivos *-ds.xml Archivos de configuracin de conexiones a BBDD utilizados por diferentes aplicaciones.
10

Unidad 4
Desplegando aplicaciones Hot Deployment Expanded Deploy Mltiples instancias Configuracin de run.sh Configuracin de puertos Instalacin/configuracin de una aplicacin con Expanded Deploy

11

Tipo de Deploys
Hot Deployment
El servicio de hot deployment es el encargado de buscar cada cierto periodo de tiempo cambios en la carpeta ./deploy Este servicio es utilizado en entornos de desarrollo ya que permite desplegar y replegar aplicaciones fcilmente sin detener el servidor. Esta ubicado en la carpeta ../deploy/ El archivo que se encarga de configurar este servicio es: hdscanner-jboss-beans.xml No es aconsejable la implementacin del mismo en el entorno productivo.
12

Tipo de Deploys
Expanded Deploy
Adems de aplicaciones empaquetadas (ZIP) el jboss permite instalar aplicaciones que estn completamente expandidas. Como ya mencionamos existen los archivos empaquetas (*.war *.ear *.sar *.jar) estos archivos son faciles de distribuir pero no nos permiten de modificar el contenido de la aplicacin fcilmente. El jboss durante el inicio realiza la descompresion de todos paquetes de cada aplicacin (*.WAR). Se realiza un Expanded Deploy cuando la aplicacin es lo suficientemente grande para afectar la performance durante el deploy.
13

Deploy de Aplicaciones
El despliegue de una aplicacin se realiza copiando un archivo (WAR) o, en caso de Expanded Deploy, la estructura de directorio de la aplicacin a la carpeta ../deploy. Este mismo procedimiento se utiliza para los archivos de datasource y otros servicios. Luego se procede a comprobar el server.log

Para la desinstalacion se debe eliminar o mover la aplicacin fuera del directorio ../deploy
14

Problemas frecuentes en Deploy


Problema entre libreras. Las propias del jboss con las desarrollada en la aplicacin. Problemas de permisos. Empaquetado incorrecto de aplicaciones. Empaquetados corruptos. Falta de espacio en el FS. Falta de permisos en los directorios temporales. No validar correctamente los requiesitos de la aplicacion,. No realizar la conexin de Base de Datos.

15

Mltiples instancias
Cuando cada vez hay mas aplicaciones o mas accesos sobre la misma, lo recomendable es crecer horizontalmente. Crecer Horizontalmente: Generar nuevas instancias que compartan la carga de una misma aplicacin u otra. Ventajas de Crecer Horizontalmente versus una nica instancia con varias aplicaciones:
Una aplicacin que falle puede afectar parcial o totalmente el desempeo de la JVM. En consecuencia dejar el resto de las aplicaciones dentro de la instancia de Jboss indisponibles. Permitir configurar cada aplicacin con los requerimientos especficos de la misma(Libreras, tamaos de memoria, etc.) Es recomendable no superar los 2 GB de memoria Heap ya que cada Garbage Collection demorara mucho tiempo congelando la aplicacin hasta que los mismos concluyan.
16

Mltiples instancias
Consideraciones previas:
Para que cada instancia tenga parametros de memoria distintos se deben generar diferentes scripts de arranque (run.sh). Cada run.sh de instancia debe especificar en la variable RUN_CONF la ruta completa del archivo run.conf de esa instancia. Se debe tener especial cuidado en la eleccin de puertos evitando el solapamiento de instancias. Verificar las polticas de logueo si se desea almacenar los logs de mltiples instancias en un mismo directorio.
17

Mltiples instancias
<instancia>/conf/bindingservice.beans/META-INF/bindingsjboss-beans.xml Archivo de configuracin que contiene los BindingSet que luego pueden asignarse a diferentes instancias. Los mismos definen la variacin o offset de los puertos por defecto. El archivo ya contiene 3 BindingSet que permiten ejecutar mltiples instancias sin necesidad de crearlos.

18

bindings-jboss-beans.xml
Estndar Modificado

Para Crear un BindingSet diferentes a los estandares debemos: Incorporar tantas lineas como BindingSet se desee crear: <inject bean=Nombre del BindingSet"/>
19

bindings-jboss-beans.xml
Estndar Modificado

En el ejemplo incorporamos 2 nuevos BindingSet llamados P1Binding y P2Binding.

20

bindings-jboss-beans.xml

Agregamos al archivo de configuracin dos nuevos bloques de Binding. Tenemos que tener en cuenta 3 valores:
Respetar el nombre del bindingSet declarado al inicio. (1) Fijar un nombre del set. (2) Definir una diferencia entre este set y los puertos default. (3)
21

bindings-jboss-beans.xml
La definicin de los parmetros anteriores dentro del archivo solo es til si la instancia hace uso de esos nuevos BindingSet. Para ello existen 2 formas de realizarlo: 1. Por parmetro al momento de inicio: 2. Modificar la lnea del archivo bindings-jboss-beans.xml

NOTA: Tener en cuenta el nombre del bloque de Binding, No el valor Inject bean
22

Consolas de las 2 instancias

Consola de Instancia . D1

Consola de Instancia . D2

23

Instalacin aplicacin JamWiki


Descargar el archivo jamwiki-1.0.4.war de http://jamwiki.org Descargar el Xampp (Apache+Mysql+phpMyAdmin) de http://www.apachefriends.org/en/xampp-linux.html Crear una instancia para esta aplicacin (jamwiki) Modificar los puertos de la instancia con un offset de 100 Descomprimir el WAR (jamwiki-1.0.4.war a jamwiki.war) Mover el dir jamwiki.war al /deploy Copiar la librera mysql-connector-java-5.1.6.jar Crear un usuario y BBDD en Mysql con phpMyAdmin Iniciar la instancia y configurar Jamwiki
24

Revisin de Unidad 4
Cuantos tipos de Deploy Existen? Si configuro Hot Deploy no puedo tener aplicaciones instaladas Expanded Deploy. V / F Explique el procedimiento para instalar, comprobar y desinstalar una aplicacin. Qu archivo permite configurar los puertos de binding del servidor de aplicacin y donde esta ubicado? Teniendo en cuenta la siguiente imagen responda:

El puerto de conexin web es 8480 V / F En caso de ser falso: Como verificara los puertos? Al menos 2 alternativas.

25

Revisin de Unidad 4 - Respuestas


Cuantos tipos de Deploy Existen? Dos tipos de Deploy:
Hot Deploy: Servicio que escanea y actualiza el listado de aplicaciones en base a modificaciones del directorio /deploy. Expanded Deploy: Caracteristica de Jboss que permite instalar aplicaciones comprimidas .WAR .JAR como tambin expandidas.

Si configuro Hot Deploy no puedo tener aplicaciones instaladas Expanded Deploy. V / F Falso : Son dos configuraciones independientes.

26

Revisin de Unidad 4 - Respuestas


Explique el procedimiento para instalar, comprobar y desinstalar una aplicacin.
Los pasos para instalar son:
Copiar la carpeta (en caso de Extended DEploy) o el archivo a la carpeta /deploy de la instancia. Analizar los logs para comprobar el correcto deploy de la misma.

Para desintalar:
Eliminar la aplicacin (Directorio o archivo). Aguardar la lnea del log de undeploy sucefully

Qu archivo permite configurar los puertos de binding del servidor de aplicacin y donde esta ubicado?
El archivo es el bindings-jboss-beans.xml y esta dentro de <instancia>/conf/bindingservice.beans/META-INF/
27

Revisin de Unidad 4 - Respuestas


Teniendo en cuenta la siguiente imagen responda:

El puerto de conexin web es 8480 V / F Falso: El nombre asociado al parmetro -Djboss.service.binding.set=ports-8480 solo es un nombre de Binding Set puede tener cualquier valor de puerto.

En caso de ser falso: Como verificara los puertos?


Verificar el archivo bindings-jboss-beans.xml Netstat nap|grep <PID de JBOSS> Logs de arranque del jboss. Documentacin del entorno.
28

Fin Unidad 4

29

Unidad 5
Mod_JK
Funcionalidad

Descargando Mod_JK
Apache-Tomcat

Configurando Mod_JK en Apache Http Server


Cargando el modulo mod_jk

Que es un Worker Generando un Virtual Host


Conexin con Jboss
30

Mod_JK
El mod_jk es un conector que permite al web container Jakarta Tomcat interactuar con diferentes servidores web usando el protocolo AJP.

Apache Netscape iPlanet SunOne IIS


31

Mod_JK
La principal funcionalidad de este mdulo es permitir a servidores de aplicaciones o al servidor Jakarta Tomcat enlazarse con un servidor web. Este servidor web, tpicamente el servidor HTTP Apache, introduce una mayor gestin en las conexiones de los clientes y mayor seguridad en las transacciones del sistema. As mismo se puede enlazar varias instancias al servidor web permitiendo una mayor tolerancia a errores y aligerar la carga en los servidores de aplicacin.
32

Protocolo AJP
El Apache JServ Protocol (AJP) es, en el contexto de la World Wide Web un protocolo binario que permite enviar solicitudes desde un servidor web a un servidor de aplicaciones que se encuentra detrs del servidor web. Tambin permite monitoreo dado que el servidor web puede enviar un ping al servidor de aplicacin.

33

Protocolo AJP
Esquema del proceso de comunicacin entre el HTTP Server y el App Server

34

Descargando Mod_JK
Mod_jk fue diseado para ser utilizado por el webcontainer Apache-Tomcat. Jboss al incluir como web container a Apache Tomcat puede utilizar el protocolo AJP para realizar el enlace con Apache Http Server. El modulo de conector lo obtenemos del Website de Tomcat Conectors: http://tomcat.apache.org/download-connectors.cgi All encontraremos todas las versiones disponibles (Fuentes, Binarios, Versiones antiguas)
35

Descargando Mod_JK
Nosotros utilizaremos la versin Binaria correspondiente a nuestro S.O. y la versin de apache que utilizamos.
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.30/i586/

Este archivo lo dejaremos en el directorio donde apache aguarda sus modulos ( /opt/lampp/modules ) y lo renombraremos a mod_jk.so

36

Configurando mod_jk en Apache Http Server


Cargando el modulo mod_jk Para esto lo mas conveniente es generar un archivo de configuracin solo para mod_jk. Al mismo lo llamaremos mod_jk.conf y luego lo incluiremos el archivo httpd.conf Los parametros mas utilizados en la configuracin del modulo son los siguientes : LoadModule JkWorkersFile JkLogFile JkLogLevel JkLogStampFormat
37

Mod_JK.conf
LoadModule jk_module modules/mod_jk.so Se encargara de indicarle al apache donde se encuentra el modulo mod_jk que tiene que iniciar JkWorkersFile etc/workers.properties Indica al modulo la ubicacion del archivo donde se definen los workers (workers.properties) JkLogFile logs/mod_jk.log Especifica la ubicacin del archivo donde se almacenaran los logs del modulo mod_jk.

38

Mod_JK.conf
JkLogLevel info Establece el nivel de log del modulo a info JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " Establece el formato de en el que se registraran los logs Una vez definidos todos estos parametros en el mod_jk.conf tendremos que editar el archivo httpd.conf y agregar la siguiente linea. Include etc/mod_jk.conf
39

Que es un Worker
Un worker es una instancia de Jboss que est esperando para ejecutar servlets por cuenta de algn servidor web. Por ejemplo, podemos tener un servidor web como Apache reenviando peticiones servlets a un proceso Tomcat (el worker que se ejecuta detrs de l) Por ende por cada instancia de Jboss que deseemos conectar al apache es necesario definir un Worker.

40

Generando el archivo Worker.properties


Los Worker se definen en el archivo worker.properties. Para definir los workers necesitamos agregar las siguientes lineas al archivo : worker.list=jboss1 Se especifica una lista de todos workers que contaran el apache. Recordemos que se usa un worker por cada instancia de Jboss, por lo tanto si tenemos diferentes intancias debemos definir el nombre de los worker aqu. Tambin es donde se definen los workers para el balanceo de carga.
41

Generando el archivo Worker.properties


Luego Definimos un worker.
worker.jboss1.port=8009 Emplea al puerto predeterminado 8009 para Jboss. Es donde el Jboss escuchara las peticiones AJP worker.jboss1.host=localhost Especifica el hostname o ip del servidor donde corre la instancia de Jboss. Emplea localhost para escenarios de una-capa (single-tier). worker.jboss1.type=ajp13 Establece la versin usada de AJP
42

Generando el archivo Worker.properties


Estos parmetros son los bsicos en caso de necesitar afinar la configuracin se puede encontrar una lista completa de parmetros disponible para los workers en: http://tomcat.apache.org/connectors-doc/reference/workers.html Cuando iniciamos el apache en el fichero de log mod_jk.log podemos verificar que el modulo se a iniciado correctamente [info] init_jk::mod_jk.c (3189): mod_jk/1.2.30 initialized

43

Generando un Vhost para la aplicacin JamWiki


En este momento ya contamos con la aplicacin jamwiki instalada en nuestra instancia de Jboss. Para que esta misma aplicacin sea publicada por medio del servidor apache http server por la url http://www.jamwikitest.com debemos realizar los siguientes pasos: En nuestro archivo /etc/hosts agregamos la linea: 127.0.1.1 www.jamwikitest.com Para comprobar que los cambios se han tomado debemos ejecutar el comando: ping www.jamwikitest.com
44

Generando un Vhost para la aplicacin JamWiki


Luego en el archivo /opt/lampp/etc/extra/httpd-vhosts.conf definimos nuestro virtualhost <VirtualHost *:80> ServerAdmin admin@prueba.com DocumentRoot /www/docs/dummy-host2.example.com ServerName www.jamwikitest.com ErrorLog logs/www.jamwikitest.com-error_log CustomLog logs/www.jamwikitest.com-access_log common JkMount /jamwiki/* jboss1 </VirtualHost> Como vemos se define el worker que servir dicho contenido ( jboss1).
En caso que otra instancia sea la que sirve esta aplicacin debemos modificarlo por el worker correspondiente
45

Generando un Vhost para la aplicacin JamWiki


Prestar atencin a la linea JkMount. en ella definimos el contexto de la aplicacin que corre en Jboss. <VirtualHost *:80> ServerAdmin admin@prueba.com DocumentRoot /www/docs/dummy-host2.example.com ServerName www.jamwikitest.com ErrorLog logs/www.jamwikitest.com-error_log CustomLog logs/www.jamwikitest.com-access_log common JkMount /jamwiki/* jboss1 </VirtualHost> Por ejemplo si queremos que publicar la aplicacin admin-console debemos modificar la linea por: JkMount /admin-console/* jboss1
46

Generando un Vhost para la aplicacin JamWiki


Ademas para que XAMPP tome los virtualhost configurados debemos agregar al fichero httpd.conf la linea: Include etc/extra/httpd-vhosts.conf Luego procedemos a iniciar el servidor Apache-http-Server /opt/lampp/lampp startapache

47

Fin Unidad 5

48

Unidad 6
SSL
Introduccin a SSL Sus principales caractersticas

Proceso de HandShake SSL


Los pasos para establecer una conexin SSL

SSL sobre WebContainer de Jboss

49

Introduccin a SSL
Qu es SSL? SSL (Secure Socket Layers) es un proceso que garantiza un canal de comunicacin seguro entre 2 equipos distantes previo a un proceso de autenticacin. Sus principales caractersticas son:
Independiente del Protocolo segurizado (HTTP, POP, FTP,SMTP) Se basa en el concepto de clave publica y privada. Genera un tnel de comunicacin seguro. Es transparente para el usuario. Su implementacin es simple. Es un estndar desde 2001 de la IETF (Internet Engineering Task Force) pasndose a llamar TLS (Transport Layer Security).
50

Proceso de HandShake SSL


Los pasos para establecer una conexin SSL son:
1. El cliente enva la peticin al servidor segurizado. En ese mismo envo se adjuntan los
modos que soporta el cliente para encriptar/desencriptar los datos.

2. El Servidor al recibir la peticin del cliente enva el certificado publico firmado por una
Entidad Certificadora Reconocida junto con el modo elegido. Como es lgico se elige el modo mas seguro compatible entre cliente y servidor.

3. El cliente verifica la validez del certificado (en consecuencia la confianza del servidor al
que se enviaran los datos). Luego genera una clave aleatoria que es cifrada por el certificado publico que envi el servidor al cliente en el paso 2.

4. El servidor recibe esta informacin encriptada, pero es el nico capaz de desencriptarla


haciendo uso de la clave privada.

5. De aqu en adelante ambos se comunican por el canal seguro ya que ambos comparten
una clave que solo ellos conocen.
51

SSL sobre WebContainer de Jboss


Generar un Certificado usando la herramienta keytool:
keytool -genkey -alias serverkeys -keyalg RSA -keystore FedoraVM.keystore -storepass lablab -keypass lablab -dname "CN=FedoraVM, OU=MiOU, O=MiORG, L=MiCiudad, ST=MiEstado, C=AR"

Copiar el certificado al conf dentro de la instancia a instalar:


mv FedoraVM.keystore <instancia>/conf

Modificar el archivo de configuracin del Webcontainer:


<instancia>/server/default/deploy/jbossweb.sar/server.xml

52

Navegando Seguro
Acceso a la web por puerto seguro https://<ip>:8443/

Se registra la siguiente advertencia porque el certificado no cumple todos lo requisitos para ser confiable.
53

Navegando Seguro
El cliente se basa en los siguientes puntos para determinar que un certificado es valido y por consiguiente se debe confiar en la contraparte:
Fecha de Vencimiento del certificado Persona o empresa que firmo el certificado. El Dominio de emisin del certificado debe coincidir al visitado.
En este caso la entidad certificadora no es segura (AUTOFIRMADO) Y el dominio no es correcto.

54

Navegando Seguro
Para solventar el error del Dominio, en vista que el acceso se realizo por IP y no por hostname:
https://192.168.104.70:8443/

Agregamos el host FedoraVM dentro


de nuestro archivo hosts:

Ahora podremos acceder a la web desde la siguiente url:


https://FedoraVM:8443/

De esta forma el browser solo nos reportar el problema de autofirmado. NOTA: Esto no altera la encriptacin, los datos viajan seguros pero el cliente reporta que no confa en la contraparte.
55

Navegando Seguro
Para aprobar el uso de esta conexin verificamos los datos del certificado y aceptamos la excepcin:

56

Navegando Seguro
Todos los datos trasmitidos por la aplicacin son encriptados por el certificado generado. Es comn que empresas posean entidades certificadoras internas (que certifican webs de su intranet). Suelen incorporar los certificados como CA confiables en los repositorios del Sistema Operativo de las maquinas cliente, de esa forma cualquier certificado firmado internamente es confiable.

57

Fin Unidad 6

58