Está en la página 1de 62

Implementacin de la capa de

lgica
Enterprise Java Beans (EJB)
Arquitectura en capas
API
dic-08 2
API
Capa lgica de negocio
Ofrece un interfaz de servicios
En JEE es una interfaz java
Cada servicio (mtodo) puede resolver
un caso de uso o parte
Los servicios pueden ser: Los servicios pueden ser:
Sin estado: cada llamada es independiente
de las dems; el cliente puede invocar en
cualquier orden
Con estado: existe nocin de sesin, una
llamada estar condicionada por las
anteriores
dic-08 3
Interfaz de servicio: ejemplo
dic-08 4
Capa de lgica:
implementacin
Modelo de dominio:
Clases que representan conceptos del
problema que se trata de resolver
Todos los procesos identificados
Ncleo de la
aplicacin
Todos los procesos identificados
durante al anlisis operan sobre
instancias de estas clases
Clases de proceso:
Implementan procesos lgicos que se
ejecutan sobre las clases del dominio
dic-08 5
aplicacin
M
o
d
e
l
o

d
e

d
o
m
i
n
i
o
:

M
o
d
e
l
o

d
e

d
o
m
i
n
i
o
:

e
j
e
m
p
l
o
dic-08 6
Capa de lgica:
implementacin
En esta capa no se debera meter
ninguna dependencia de tecnologa
de infraestructura
Debera poderse ejecutar fuera de Debera poderse ejecutar fuera de
cualquier entorno (para testear)
La persistencia suele ser la principal
dependencia. La capa DAO la evita
dic-08 7
Solucin en capas
D
Procs
Fa
ca
Service
Interface
Action
Control
Persistence
Interface
JDBC
Hibernate DAO
JDBC DAO
dic-08 8
D
A
O
D
F
DAO
Factory
ca
de
Action
Action
Action
Action
Fa
ca
de
Lgica Persistencia Presentac.
Procs
JDBC DAO
JPA DAO
Spring DAO
Model
Model
Model
Procs
Procs
Posibles requisitos no funcionales
de la capa lgica
Persistencia automtica POJO
Acceso remoto (remoting) o local
Transacciones locales o distribuidas Transacciones locales o distribuidas
Control de acceso (seguridad) por
aplicacin o por mtodo
Soporte MOM (Message Oriented Mid)
Integracin con servidores de otras
tecnologas (legacy)
Escalabilidad, vertical y horizontal
dic-08 9
Requisitos no
Conexiones remotas
Acceso
Requisitos no
funcionales:
acceso remoto
dic-08 10
Acceso
local
RNF:
Transacciones
distribuidas
dic-08 11
Se actualizan
dos BDD
Requisitos no funcionales:
Integracin MOM

Channel
Pueden tener cola para
soportar cadas del
sistema receptor

dic-08 12
Requisitos no funcionales:
escalabilidad
Balanceo de carga
Fail over transparente
Clustering Clustering
Redeploy dinmico
Gestin de servidores
Control de Concurrencia
Cacheado
Pool de recursos
dic-08 13
Resolucin de requisitos no
funcionales
EJB Otras tecnologas Java
Persistencia POJO
automtica
SI JDBC, Hibernate, TopLink, iBatis,
SpringDAO
Acceso remoto SI Web Services como capa de
presentacin, programando RMI
Transacciones distribuidas SI Programando API JTA
Control de acceso SI A nivel de Aplicacin, o por programa,
o con AOP
Soporte MOM SI Programando API JMS
Integracin con servidores SI Programando API JCA o con
frameworks que lo soporten
Escalabilidad SI Condicionando la programacin,
servidores de cache 2 nivel, etc.
dic-08 14
Eleccin de la plataforma
S, se puede hacer una aplicacin
con todos los requisitos sin usar
EJBs
pero si se necesitan ms de uno de pero si se necesitan ms de uno de
los vistos es una invitacin muy clara a
usar EJB
El servidor de aplicaciones
(contenedor de EJB) nos los da
resueltos
dic-08 15
Qu es la especificacin EJB?
Una arquitectura de componentes de
servidor:
Simplifica el proceso de construccin de
aplicaciones distribuidas
Es posible escribir aplicaciones escalables,
fiables y seguras sin escribir cdigo de
infraestructura
Desarrollo ms rpido de la parte servidora
Aplicaciones portables entre distintas
plataformas (Java) y servidores de
aplicaciones (especificacin estndar)
dic-08 16
S pero qu es un EJB?
En EJB 3.0 es una clase java normal
(POJO) con anotaciones
especficas
que se ejecuta dentro de un que se ejecuta dentro de un
contenedor
que le da un contexto y le
resuelve los servicios de
infraestructura de forma
transparente
dic-08 17
Clase java normal (POJO) con
annotations
Interfaz que ve la
capa de presentacin
dic-08 18
Anotaciones EJB
En EJB 3.0 se reducen considerablemente
las tareas que el desarrollador del bean
debe realizar
EJB 3.0 todos los beans son POJOs con
anotaciones EJB.
@Stateless
@Statefull
@Local
@Remote
@WebService
@Entity
@Embeddable
.
EJB 3.0 todos los beans son POJOs con
anotaciones EJB.
Mediante anotaciones:
Se declara el interfaz del bean
El mapeo O/R
Referencias a recursos
Cualquier cosa que antes ponamos en los
descriptores
El descriptor no es obligatorio
dic-08 19
Cmo le resuelve el acceso
remoto?
Generando
automtica-
mente clases
que se que se
encargan del
protocolo
(RMI-IIOP,
SOAP, RMI,
)
Clases
generadas por el
contenedor
dic-08 20
Cmo le resuelve los servicios de
forma transparente?
Interceptando
las llamadas y
tomando el
control
Clase que se
programa
control
Algo as como
el stack de
interceptores
de Struts2
dic-08 21
dic-08 22
Tipos de EJBs
Session Beans:
Modelan procesos de negocio accedidos de
manera sncrona
Implementacin del patrn Faade
Message-driven Beans: Message-driven Beans:
Modelan procesos de negocio accedidos de
manera asncrona, permiten el uso de JMS
desde EJBs
Entity Beans:
Representan entidades de negocio con mapeo
objeto/relacional
En EJB 3.0 ya no se usan, pasan a ser POJOs
Pero un contenedor EJB3.0 debe gestionar Entity
Beans (compatibilidad hacia atrs)
dic-08 23
Versiones de la especificacin
EJB 1.0
Session Beans y Message Beans
EJB 1.1
Aade Entity Beans
Registro JNDI Registro JNDI
Descriptor de despliegue XML
EJB 2.0
Define mejor, permite interoperabildad de
herramientas
Compatible CORBA, RMI-IIOP
EJB 2.1
WebServices
Timer Service
EJB 3.0
Simplifica desarrollo, uso de POJOS y annotations
Persitencia de POJOS, evita uso de EntityBeans
dic-08 24
Despliegue EJB 3.0
dic-08 25
Empaquetado de EJBs: jar
Se realiza en
ficheros JAR
Uno o ms
EJBs por
ejb-jar.xml
(optativo en EJB 3.0)
EJBs por
cada JAR
Ejemplo: jboss.xml
(depende del contenedor)
(puede ser optativo)
dic-08 26
Estrucutra interna del paquete jar
opcionales
dic-08 27
Descriptor de Despliegue:
ejb-jar.xml
Especifica las propiedades y servicios del EJB
de forma declarativa.
Describe como ha de ser desplegado el EJB en
el contenedor, y como ha de ser manejado: el contenedor, y como ha de ser manejado:
Ciclo de vida
Sistema de persistencia
Control de transacciones
Servicios de seguridad
Es un fichero XML: ejb-jar.xml
Habr uno por paquete de despliegue (fichero
jar) y puede declarar varios EJBs de distintos
tipos.
dic-08 28
Descriptor de despliegue:
ejb-jar.xml, ejemplo
dic-08 29
Descriptor especfico del
contenedor
Cada contenedor permite particularizar el
despliegue para buscar optimizaciones
Fuera del estndar J2EE
Consultar documentacin de cada contenedor
Es otro fichero XML que se adjunta al ejb- Es otro fichero XML que se adjunta al ejb-
jar.xml
orion-jar.xml, jboss.xml, web-sphere.xml, etc
Normalmente, los servidores de
aplicaciones facilitan herramientas para
realizar el despliegue y confeccionar los
descriptores.
dic-08 30
Empaquetado de aplicaciones de
servidor: ficheros EAR
dic-08 31
Empaquetado de aplicaciones:
ficheros EAR
Contienen la parte WEB y la parte
EJB
Necesitan un descriptor especial:
/META-INF/application.xml /META-INF/application.xml
dic-08 32
applicaction.xml: ejemplo
dic-08 33
Session Beans
Sesin Beans
Implementacin del patrn Facade
Implementan la interfaz de la capa
de servicio
Dos tipos de session beans Dos tipos de session beans
Sin estado: cada invocacin a un
mtodo es independiente de las dems
Con estado
dic-08 35
Aplicacin del patrn Faade
dic-08 36
Staless session beans
Cada invocacin a un mtodo es
independiente de las dems
invocaciones
No hay orden en las llamadas No hay orden en las llamadas
No guardan estado conversacional
Pero pueden guardar atributos
independientes de las invocaciones:
conexiones, sockets, etc
El contenedor instancia un pool
suficiente para atender las peticiones
dic-08 37
Pool de stateless session beans
Para cada invocacin a mtodo el
contenedor escoge un bean del pool
para atender la llamada
Si el contenedor tiene
demanda puede
instanciar ms, si le
sobran puede eliminar
algunos
dic-08 38
Ciclo de vida stateless bean
dic-08 39
Ciclo de vida
New
Inyeccin de dependencias
PostConstruct
Llamada callback para que el inicialize
lo que necesite
Operativo: llamada a mtodos
Predestroy
Llamada callback para que cierre lo
inicializado
dic-08 40
Creacin de un bean, pasos
Definir el interfaz de negocio que se
va a implementar
Escribir la clase que lo implementa Escribir la clase que lo implementa
Se le pueden aadir mtodos callback
Anotar la implementacin
@Stateless
[@Remote] Si va a tener acceso remoto
[@TransactionAttribute]
Empaquetar y desplegar
dic-08 41
Stateless: ejemplo
Tendr acceso remoto
dic-08 42
Invocacin de stateless: cliente
Este cdigo se ejecuta en
otra mquina (JVM)
El cliente necesita acceso a la
implementacin del stub
El stub se obtiene de un
registro JNDI
dic-08 43
Despliegue y JNDI: ejemplo
El registro JNDI mantiene
referencias a los beans que
sirve el contenedor
dic-08 44
Acceso desde Action Struts:
ejemplo
Sin dependencias de
la implementacin la implementacin
Clave en contexto JNDI dic-08 45
Statefull session beans
El bean mantiene estado
conversacional
Los valores de sus atributos son
funcionales para un usuario funcionales para un usuario
Para cada usuario concurrente se
asigna uno (vinculado a la sesin
del usuario)
La gestin en pool es ms compleja
Passivation y Activation
dic-08 46
Ciclo de vida de Statefull bean
dic-08 47
Passivation & Activation
Si se alcanza el tamao mximo del
pool el contenedor serializar un bean
Serializar: lo saca de memoria y lo guarda
en soporte persistente en soporte persistente
Habitualmente poltica LRU
Cuando se vuelve a necesitar el bean
serializado se vuelve a cargar
Desplazando a otro a soporte persistente
Cuando un bean termina su proceso
se puede eliminar o mantener en el
pool
dic-08 48
Pasivacin
dic-08 49
Activacin
dic-08 50
Statefull bean: ejemplo, corrector
de examen
Atributos que definen
el examen en curso de
un usuario
@Statefull
@Remote
dic-08 51
Uso desde Struts: ejemplo,
corrector de examen
Inicio del examen
dic-08 52
Uso desde Struts: ejemplo,
corrector de examen
Respuesta a cada pregunta
dic-08 53
Callbacks en session beans
Un bean puede ser notificado cada
vez que cambia de estado en su
ciclo de vida
El bean puede tener cosas que hacer El bean puede tener cosas que hacer
Para recibir notificaciones el bean
debe implementar mtodos y
asociarlos a los eventos
Con anotaciones
dic-08 54
Anotaciones para callbacks
@PostConstruct
@PrePassivate
@PostActivate @PostActivate
@PreDestroy
dic-08 55
Control de transacciones
Programtica: usando el API JTA
Declarativa:
En deployment descriptor
Con anotaciones Con anotaciones
Por defecto
Se especifica la forma de participacin en
transacciones
Por mtodo
Por bean completo
No se indica el nivel de aislamiento
configuracin particular de cada contenedor
dic-08 56
Transacciones controladas por el
contenedor
@TransactionAttribute
MANDATORY
REQUIRED
Por defecto el control de
transacciones es
CONTAINER CONTAINER- -MANAGED MANAGED
REQUIRED
REQUIRES_NEW
SUPPORTS
NOT_SUPPORTED
NEVER
REQUIRED REQUIRED en el tipo por defecto
para todos los mtodos del bean
dic-08 57
Transacciones controladas por el
contenedor: cmo?
Invocacin al mtodo
del EJB que se solicita
dic-08 58
Control de acceso
El contenedor (o la aplicacin) debe
autenticar al usuario y asignarle el
rol(es) que le corresponda(n)
Se especifica qu rol tiene acceso Se especifica qu rol tiene acceso
por bean o mtodo:
@RolesAllowed, @PermitAll, @DenyAll
Roles abstractos que maneja el
sistema
@DeclareRoles
dic-08 59
Configuracin de seguridad:
ejemplo
dic-08 60
Message Driven Beans
Incorporados en la especificacin
2.0.
Pensados para mensajera
asncrona. asncrona.
Funcionan sobre JMS (manejo de
colas de mensajes, publish &
subscribe)
Interesantes para integracin de
sistemas.
dic-08 61
Message Driven Beans
Es el nico que est obligado a
cumplir una interfaz concreta:
javax.jms.MessageListener
No implican cambios significativos No implican cambios significativos
dic-08 62

También podría gustarte