Este documento describe JBoss, un servidor de aplicaciones Java de código abierto. JBoss implementa los estándares J2EE y ofrece servicios como EJB, Hibernate y JMS. Usa directorios como bin, deploy y conf para ejecutarse y administrarse. Los desarrolladores pueden implementar EJBs, servicios web y aplicaciones JSF en JBoss.
2. Introducción
Conceptos básicos
Servidor de aplicaciones J2EE Open Source
implementado en Java.
Multiplataforma.
Desarrollo: JBoss Inc. → Red Hat en 2006.
Implementa todo el paquete de servicios de J2EE.
Versión estable actual (11/2011): JBOSS 7.x.
Vamos a usar la JBOSS 5.1.0 GA
http://www.jboss.org/jbossas
3. Introducción
Conceptos básicos
Licencia de código abierto (GPL/LGPL).
Cumple los estándares.
Incrustable, orientado a arquitectura de servicios.
Flexibilidad consistente.
Middleware para cualquier objeto de Java.
Ayuda profesional 24x7 de JBOSS.
Soporte completo para JMX.
4. Introducción
¿Qué ofrece JBOSS?
EJB 3.0: Implementa la especificación EJB 3.0.
JBoss AOP: Orientado a Programación Orientada
a Aspectos (en Java AspectJ).
Hibernate: Servicio de persistencia de
objeto/relaciones y consultas para Java.
JBoss Cache: Aumenta el rendimiento de
aplicaciones → Se cachean objetos Java más
frecuentemente accedidos.
5. Introducción
¿Qué ofrece JBOSS?
JBoss IDE: IDE Eclipse para el JBoss AS.
JBoss jBPM: WorkFlow. Soporta tres lenguajes de
procesos:
• PDL
• BPEL
• Pageflow
JBoss Portal: plataforma para albergar y servir
una interfaz de portales Web. (Prtlets: JSR-168)
6. Introducción
¿Qué ofrece JBOSS?
Tomcat: Contenedor de servlets.
JBoss Mail Server: Servidor de correo (JEMS).
JBoss MQ: Colas de mensajes (JMS).
JForum: Paquete dedicado a foros: soporte RSS,
hilos y mensajes individuales, caché configurable,
internacionalización, instalación gráfica, etc.
7. Introducción
Configuraciones (Modos)
minimal: Servicios mínimos para que funcione
Jboss. Sin contenedor web, EJB ni JMS.
default: Tiene los servicios usados más
frecuentemente.
all: Arranca todos los servicios disponibles.
Incluyendo los servicios de clustering y RMI/IIOP.
standard: Configuración de servicios certificada
JavaEE 5.
web: Configuración ligera de contenedor web.
8. Introducción
Estructura de directorios
bin: arranque, cierre, y otros scripts y ejecutables.
client: JAR's que serán utilizados por los distintos.
clientes de los EJB's utilizados en JBoss.
docs: contiene documentación acerca de Jboss.
lib, common: JAR's requeridos en cualquier modo.
server: modos all, default, minimal, standard, web.
9. Introducción
Estructura de directorios
[modo]/conf: Contiene el fichero 'bootstrap.xml'
(configuración de servidor).
[modo]/data: Almacena contenido en el sistema.
Mantiene datos persistentes aunque se reinicie el
servidor. Ejemplo → Hypersonic: BD embebida
guardan datos aquí.
[modo]/deploy: Contiene aplicaciones
'deployables' (WARs, EARs, JARs, etc.)
[modo] = all, default, minimal, standard, web.
10. Introducción
Estructura de directorios
[modo]/lib: Contiene librerías JAR.
[modo]/log: Ficheros de logs.
[modo]/tmp: Ficheros temporales. Al desplegar
aplicaciones, JBOSS escribe sus ficheros de
despliegue aquí.
[modo]/work: Usado por Tomcat para las JSP
compiladas.
[modo] = all, default, minimal, standard, web.
11. Introducción
Instalación y ejecución
Instalar Java
Descargar JBOSS (jboss-5.1.0.GA.) aquí.
Descomprimir el ZIP en /usr/local/jboss
Arrancar JBOSS:
• cd /usr/local/jboss/bin
• ./run.sh o /etc/init.d/jboss start
Prueba: Consola de administración de JBOSS:
http://localhost:8080/admin-console
13. Introducción
Instalación y ejecución
Es posible elegir arrancar las instancias de JBOSS:
• ./run.sh -c nombre_instancia
Es habitual copiar la instancia default y pegarla
como “deusto” (por ejemplo):
• sudo cp -r -p default/ deusto
• ./run.sh -c deusto
• Siempre tendremos default limpio por si
tenemos que recuperar alguna configuración
inicial. ;)
14. Configuración
Ficheros de configuración
conf/jboss-service.xml – Configura servicios que
provee JBOSS cuando se arranca.
conf/standardjboss.xml – Configuración por defecto
para EJBs.
conf/standardjbosscmp-jdbc.xml – Datasources por
defectos, databases, tipos de datos de BD, etc.
conf/bootstrap.xml – Contenedores que se
desplegarán en la fase de arranque. (AOP, JMX, etc.)
conf/java.policy– Políticas simples de seguridad de
Java.
15. Configuración
Ficheros de configuración
conf/jbossjta-properties.xml – Propiedades por
defecto del gestor de transacciones.
conf/standardjboss.xml – Configuración por defecto
para EJBs.
conf/jndi.properties – Propiedades iniciales del
contexto de JNDI.
conf/jboss-log4j.xml – Configuración de log4j.
login-config.xml – Ejemplo de configuración de
seguridad en la parte del servidor cuando se utiliza
JAAS como sistema de seguridad.
16. Configuración
Directorio deploy
Directorio de despliegue de aplicaciones.
Soltar dentro de deploy la aplicación (WAR, EAR,
etc.) → JBOSS la despliega.
Eliminar aplicación → JBOSS la repliega.
Contiene ficheros de configuración de despliegues:
• mail-service.xml, transaction-service.xml, etc.
• *-ds.xml: Para JBOSS son datasources. Por
ejemplo: hsqldb-ds.xml: configura los datasource
oara la base de datos embebida Hypersonic.
17. Configuración
Configuración de un Datasource
Crear fichero nombre-ds.xml: oracle-ds.xml
Pegar el fichero en el directorio deploy.
JBOSS lo despliega como un datasource.
Ejemplos de datasources:
/usr/local/jboss/docs/examples/jca
• db2-400-ds.xml
• oracle-ds.xml
• mssql-ds.xml
• msaccess-ds.xml
• Muchos más...
18. Seguridad
JAAS
Java Authentication and Authorization Service
Interfaz que permite a las aplicaciones Java acceder
a servicios de control de autenticación y acceso.
Diferentes formas de seguridad:
• Ficheros de properties.
• Base de datos.
• Etc.
EJEMPLO JAAS1
19. EJB
Conceptos básicos
Enterprise JavaBeans
Su especificación detalla cómo los servidores de
aplicaciones proveen objetos desde el lado del
servidor (EJB):
• Comunicación remota utilizando CORBA
• Transacciones
• Control de la concurrencia
• Eventos utilizando JMS
• Servicios de nombres y de directorio
• Seguridad
20. EJB
Tipos de EJBs
EJB de Entidad (Entity EJBs): Encapsulan objetos
del lado del servidor que almacena los datos para su
persistencia.
EJB de Sesión (Session EJBs): Lógica de negocio.
EJB dirigidos por mensajes (Message-driven
EJBs): beans con funcionamiento asíncrono.
21. EJB
Funcionamiento de EJB
Se disponen en contenedor EJB dentro del JBOSS.
Cada EJB facilita una clase de implementación Java
y dos interfaces Java → Remote y Home.
• Home: Permite crear las instancias de EJB de
entidad o sesión a través del método create que
puede ser sobrecargado.
• Remote: Especifica los métodos de instancia
públicos encargados de realizar las operaciones.
24. Servicios web
WS en JBOSS
No requiere ninguna aplicación externa (Axis2).
JBOSS contiene un contenedor de WS.
Se despliegan como WARs.
Se implementan a través de Java Annotations
(javax.jws.*).
Para ver los servicios web disponibles en JBOSS:
http://localhost:8080/jbossws/services
25. Servicios web vs EJB
¿Cuando usar unos u otros?
EJB implican clientes Java. WS pueden consumirse
desde plataformas distintas.
Los servicios web no necesitan redistribuir ningún
cliente, basta con el WSDL publicado accesible por
HTTP y actualizado continuamente.
A nivel interno se recomienda EJB.
Para clientes externos se recomienda WS.
EJB mejor rendimiento que servicios web.
26. JSF
Conceptos básicos
Java Server Faces: especificación desarrollada por
la Java Community Process como JSR 127.
Tecnología y framework para aplicaciones web Java
que simplifica el desarrollo de interfaces de usuario.
Usa JavaServer Pages (JSP) para desplegar
páginas.
Puede ser integrado con las bibliotecas de
componentes JSF JBoss RichFaces o ICEFaces.
27. JSF
Incluye
APIs para componentes de una interfaz de usuario y
administrar su estado, manejar eventos, validar
entrada, definir un esquema de navegación de las
páginas y dar soporte para internacionalización y
accesibilidad.
Conjunto por defecto de componentes para la
interfaz de usuario.
Dos bibliotecas de etiquetas personalizadas para
JavaServer Pages que permiten expresar una interfaz
JavaServer Faces dentro de una página JSP.
28. JSF
Incluye
Un modelo de eventos en el lado del servidor.
Administración de estados.
Beans administrados.
29. JSF
Implementaciones
JSF Reference Implementation de Sun
Microsystems.
MyFaces: proyecto de Apache Software Foundation.
Rich Faces:
ICEFaces: http://www.icefaces.org/main/home/
jQuery4jsf: Basados en uno de los más populares
framework javascript → jQuery.
PrimeFaces
30. JBOSS SEAM
Implementaciones
Framework desarrollado por JBoss,
Combina a los 2 frameworks EJB3 y JSF.
Desarrollo WYSIWYG es facilitado a través del uso
de las JBoss Tools.
Jboss Tools: Conjunto de plug-ins diseñados para el
entorno integrado de desarrollo Eclipse.
http://www.seamframework.org/Home
31. Temas pendientes
Lista de temas
Conectar Apache2 con JBOSS.
JSP que sirva contenido estático del Apache.
32. JBOSS
FIN
Iker Canarias
iker.canarias@gmail.com