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