Está en la página 1de 52

JBoss Seam in action

Ing. Ariel Luduea ariel.luduena@moove-it.com


Ing. Martn Cabrera - martin.cabrera@moove-it.com

JUGUY OpenUY 08
Segundo evento del grupo junto con el
UYLUG y el apoyo de la IMM
www.openuy.org
Estn todos invitados a participar y colaborar
en la organizacin y armado del evento !!!

Sobre nosotros
Ing. Martn Cabrera
Fundador Juguy
Director y Consultor de moove-iT
www.linkedin.com/in/martincabrera

Lic. Ariel Luduea


Miembro del Juguy
Director y Gerente de Investigacin & Desarrollo de moove-iT
www.linkedin.com/in/luduenaariel

Experiencia docente en Java y Java EE


Desarrollamos en JBoss Seam !!

Objetivos de la charla
Introducir en las herramientas de JBoss
Introducir en el desarrollo de aplicaciones
utilizando JBoss Seam
Objetivo secundario
Demostrar que con JEE se pueden hacer
aplicaciones con alto nivel de productividad.
(en serio :)

De que vamos a hablar


Introduccin a Java EE
Introduccin a frameworks de uso general en
Java EE
Introduccin a JBoss Seam
Caso prctico con Seam
Requerimientos
Arquitectura general

Conclusiones

Arquitectura Java EE
http://java.sun.com/javaee/5/docs/tutorial/doc/bnacj.html

APIs ms relevantes
Enterprise Java Bean (EJB)
Java Persistence API (JPA)
Java Server Faces (JSF)
Java Authentication and Authorization Services
(JAAS)
Java Naming And Directoriy Interface (JNDI)
Java Database Connectivity API (JDBC)
Otros:
JCA, SAAJ, JAXB, JMS, JMX, JSP, Servlet, JSTL, Java
Mail, JAF, JAXP, JAX-WS, JAXB, JAXR, StAX, SAX, etc.
Etc.

Cadena de produccin
(esta imagen cumpli varios aos )

Aplicacin Java EE de ejemplo


Facelets + JSF + EJB + JPA

Problemas tpicos
Complejidad en la arquitectura
Tengo 2,3,4 o n formas de hacer las cosas
Soluciones puristas
Soluciones terroristas
Soluciones que cumplen con el objetivo

Asociar a Java con desarrollos complicados


Complicar el diseo por parte de los arquitectos
Elegir entre los 1000 frameworks existentes
Development IDEs, Maven, Ant, SVN, CVS
Deployment
Elegir entre los 100 Application Servers
El que no tuvo problemas que levante la mano !

Proyectos de Jboss
http://jboss.org/projects

Respuesta a nuestras plegarias JBoss Seam


Application Framework para aplicaciones
Java EE
Integra:
Asynchronous JavaScript and XML (AJAX)
Java Server Faces (JSF)
EJB 3
JBPM

Principios de JBoss Seam


Single Tier porqu no?
No hay distinciones de capas (negocio, presentacin,
componentes). Nosotros definimos la arquitectura !

Integracin de EJB 3 con JSF


Java EE no provee una forma standard de integrarlos
Con Seam
Todo puede ser un EJB
Todo NO puede ser un EJB.

Integracin con AJAX


Icefaces o Richfaces (default)
Provee manejo de remoting desde cdigo Java Script

Principios de JBoss Seam


Integracin con procesos de negocio (JBPM)
Personalmente creo que gran parte de los sistemas que
desarrollamos son procesos (simples o complejos)

Manejo de estados (contextos)


Ariel toda tuya !

Bijection
Asignar una variable a un contexto (en las dos
direcciones)

Menos XML
Seam extiende las anotaciones de EJB 3 con manejo de
estado y contextos declarativos

Integracin con testing

Porque Seam?
Si quedan dudas
porque en breve se transformar en especificacin
Web Beans

Seam-gem generador de cdigo


A partir de entidades anotadas
A partir de la Base de datos
Genera pginas, clases Home y List por entidad

Jboss Tools - Plugins para eclipse


Visor de JSF
Crear proyectos Seam (EAR o WAR)
Propone una arquitectura y un conjunto de tecnologas: Richfaces y
Facelets

Seam Contextual Components

Seam Contextual Components

Temas importantes. (no se duerman)


Contextos
Cuales son y para que sirven?
Business Context!
Rpida explicacin de JBPM

Componentes Seam
Quienes pueden ser y como se identifican.

Colocar y obtener componentes de los contextos


Por medio de annotations con Bijection (Injection +
Outjection)
Programticamente

Contextos JEE
Application
Session
Request
Page (JSP)
Pregunta:
Estos contextos son suficientes?

Contextos en Seam
Application
Business
Session
Conversation
Page
Event
Sirven para algo tantos contextos?

Contextos en Seam

Contextos a analizar
Application
Business
Session
Conversation
Page
Event

Conversation Context
Concepto de unit of work
Problema: Creacin de wizards.

Conversation Context
Problema: Creacin de wizards.

Conversation Context
Problema: Creacin de wizards.

Conversation Context
Problema: Creacin de wizards.

Conversation Context
Problema: Creacin de wizards.

Conversation Context
Cuando se termina el flujo se destruyen las
variables en el contexto
No me tengo que preocupar por nada!

El flujo se termina por:


Se da por finalizado el flujo.
El usuario selecciona algo fuera del flujo.

Conversation Context
Como se crea un contexto?
Al llamar a un mtodo. (mtodo anotado con
@Begin)
Al ir a una pgina. (XML de la pgina con <beginconversation join="true"/>)

Conversation Context
Como se crea un contexto?
Al llamar a un mtodo. (mtodo anotado con
@Begin)
Al ir a una pgina. (XML de la pgina con <beginconversation join="true"/>)

Conversation Context
Como se crea un contexto?
Al llamar a un mtodo. (mtodo anotado con @Begin)
Al ir a una pgina. (XML de la pgina con <beginconversation join="true"/>)

Como se destruye?
Al llamar a un mtodo. (mtodo anotado con @End)
Regla de navegacin. (Regla en el XML de la pgina con
<end-conversation/>)
Pinchando un s:link con atributo (propagation=end)

Ejemplos:
Pagina: categoryEdit.xhtml
XML: categoryEdit.page.xml

Ejemplos:
No propagar la conversacin

Iniciar y terminar conversacin con mtodos

Business Context
Se almacena el estado de los procesos de
negocio definidos.
Concepto de long running business process
Utiliza JBoss JBPM como motor de workflow.

Definicin de un Proceso de negocio

Instanciar un proceso de negocio


Llamar a un mtodo anotado con:
@CreateProcess(nombre_del_proceso)

A partir de la invocacin anterior se crea una


instancia de proceso y el contexto asociado.
Se ejecuta automticamente la transicin
inicial.
La primer tarea es creada. El pool de
actores asociado la puede ver.

Componentes Seam
Un componente seam es toda clase anotada
con @Name(nombre_componente)
Los componentes pueden ser:
EJB 3.0 Session Beans (Statefull y Stateless)
EJB 3.0 Entity Beans
MDBs 3.0
POJOs

Colocar y Obtener componentes

Bijection
Concepto de Injeccin de dependencias

Variantes en Injection

Variantes en Injection

Alternativa a Injectar
Alternativa programtica.

Que sabemos hasta ahora?

Que nos falta?


Seguridad
Autenticacin
Autorizacin

Flujo entre pginas


Reglas de navegacin de Seam (Stateless
Model)
JPDL - Pageflow (Stateful Model)

Seguridad
Componente Identity
Almacena la identidad del usuario.
Esconde la complejidad de la autenticacin y
autorizacin.

3 pasos para la autenticacin

3 pasos de autenticacin

Autorizacin
A nivel de componente.
A nivel de pgina.
A nivel de navegacin entre pginas.

Flujo entre pginas


JSF o Seam Flow
Stateless
No toma en cuenta el estado de la aplicacin
Solo se basa en la pgina de donde viene y a donde va
El cdigo en java es ms complejo

JPDL / Pageflow
Stateful
Toma en cuenta el estado para el ruteo
Las reglas son ms complejas pero el cdigo en java es
ms simple

Basta de hablar!
A probar algn ejemplo

Muchas gracias !!!

www.moove-it.com
www.juguy.org

También podría gustarte