Ejb
Ejb
Componentes software
1
¿Qué es software basado en componentes?
Múltiples Integración
suministradores
lego robusta
2
Definición de componente software
3
Componente vs. objeto
Interfaces
4
Dependencias del contexto
Peso de un componente
5
¿Por qué componentes software?
Reusabilidad
Modularidad
Software estándar vs. específico
Inevitable
Unidades de despliegue
Experiencia
Mercado
Estándares
6
EJB y JavaBean son cosas distintas
n Un JavaBean es
n un componente software Java reutilizable
n que puede ser manipulado visualmente por herramientas de
construcción de aplicaciones
n Respecto a una clase Java, un JavaBean soporta
n introspección
• permite a las herramientas ver qué hay dentro del Bean
• la signatura de los métodos sigue unos patrones (p.ej.:
getPropiedad, setPropiedad)
n customización
• permite cambiar la apariencia y comportamiento del Bean
n eventos
• los Beans pueden disparar eventos
n propiedades
• permite manipular los Beans desde un programa
n persistencia
• salvar y recuperar el estado del Bean
7
J2EE
Objetivos de J2EE
8
Objetivos de J2EE
ncia
o nc urre
C
ion s
rizac tario
Auto propie
as
istem
n c on s
ració
Integ
gocio
g ica de ne
L ó
a Datos
Acceso
Seguridad
as
es Distribuid
Transaccion
© Juan Pavón Mestras, UCM 2001-02 J2EE 17
9
Arquitectura de un contenedor
Componentes
de aplicación
Componentes
de aplicación Descriptor de
despliegue
Descriptor de
despliegue
Componentes
de aplicación
Descriptor de
despliegue
10
Contenedores en J2EE
Contenedor de Applets
clase java.applet.Applet
MiApplet
Descriptor de
despliegue
11
Contenedor Web
Descriptor de
despliegue
MiJSP
Descriptor de
despliegue
Contenedor de EJBs
javax.ejb.EJBHome, javax.ejb.EJBObject
gestión del espacio de nombres JNDI
javax.ejb.SessionBean o javax.ejb.EntityBean
Transacciones, seguridad
MiEntityBean
Descriptor de
despliegue
MiSessionBean
MiMessageBean Descriptor de
despliegue
Descriptor de
despliegue
12
Servicios estándar J2EE
n HTTP/HTTPS
n Java Transaction API (JTA)
n JDBC
n Java Message Service (JMS)
n Java Authentication and Authorization Service
(JAAS)
n J2EE Connector Architecture
n Java API for XML Parsing (JAXP)
n Otros: RMI-IIOP, JavaIDL, JavaMail, JavaBeans
Activation Framework (JAF)
servidor Nivel
BD sistema de Base de datos
información
13
Componentes web
n Servlets
n Clases escritas en Java que procesan peticiones y
construyen respuestas
n JSP
n Documentos basados en texto que contienen dos tipos
de texto: una plantilla de datos estática que puede
expresarse en un formato como HTML, WML o XML, y
elementos JSP que determinan cómo la página
construye el contenido dinámico
Nivel máquina
Aplicación con Aplicación cliente cliente
interfaz gráfica cliente
(AWT, Swing),
que normalmente
interactúa
directamente con máquina
un EJB Nivel servidor
EJBs
negocio J2EE
Nivel máquina
Base de datos sistema de servidor
información BD
14
Componentes de negocio
Arquitectura J2EE
15
Tipos de contenedores
n Contenedor de EJBs
n Gestiona la ejecución de EJBs en un servidor J2EE
n Contenedor web
n Gestiona la ejecución de las páginas JSP y servlets en
un servidor J2EE
n Contenedor de aplicación cliente
n Gestiona la ejecución de los componentes de aplicación
cliente en una máquina cliente
n Contenedor de applet
n Navegador con plug-in Java en una máquina cliente
Tipos de contenedores
Contenedor Web
Aplicación
cliente Base de
Contenedor datos
de aplicación EJB EJB
cliente
Contenedor de EJB
Máquina cliente
Servidor J2EE
16
Interoperabilidad de J2EE
Roles de desarrollo
n Roles
n Proveeder de Producto J2EE
n Proveedor de herramientas
n Desarrollador de componentes (Application Component
Provider)
• Creador de EJBs
• Creador de componentes web
• Creador de aplicaciones cliente J2EE
n Integrador de aplicaciones (Application Assembler)
n Responsable de despliegue
n Administrador del sistema
17
Roles de desarrollo en J2EE
ncia
urre
Conc c ion
riza os
Auto redad
as he
con sistem
ración
Integ
a Datos
Acceso
Seguridad
tribuidas
iones Dis
Transacc
cio
de nego
Lógica
18
Roles de desarrollo en J2EE
cio
de nego
Lógica
n Integrador de aplicación
n Combina los ficheros JAR de los proveedores de
componentes y los integra en un fichero de aplicación
EAR (Enterprise ARchive)
n Puede integrar otros componentes de aplicación
(interfaces gráficas, etc.)
n Define las transacciones que gestiona el contenedor
n Define los roles de seguridad
n Utiliza descriptores de despliegue (XML)
de
Roles d
e gu ida
g ocio S
de ne
Lógica egocio
a de n
Lógcicio e
o ición d
de neg Defin ciones
Lógica trans ac
19
Composición de módulos en aplicaciones
n Responsable de despliegue
n Prepara la instalación de la aplicación en un servidor de
aplicaciones J2EE
• Copia los ficheros EAR en el servidor de aplicaciones
• Puede añadir clases de implementación adicionales para
el contenedor
• Instala la aplicación en el servidor
n Configura la aplicación con información específica del
servidor de aplicaciones
• Ajustará los roles de seguridad a los del sistema
Roles de
ad
de nego
cio Seguid
Lógica de negocio
Lógica
cio Definición de
de nego iones
Lógica
transacc
20
Ciclo de vida de aplicación J2EE
21
Roles de desarrollo en J2EE
Integrador lient e
Desarrollador
ción C
de componentes de componentes Aplica
Responsable
de despliegue
EJB
dor
ontene
C
EJB
J2EE
Administrador del sistema Servidor
© Juan Pavón Mestras, UCM 2001-02 J2EE 43
22
Contratos del modelo EJB
tenedor
Contrato con Con
el cliente
e EJB
Client
23
Contratos del modelo EJB
Cliente EJB
Clase de interposición
del contenedor
Red
24
Tipos de EJB
n Session bean
n Realiza una tarea para un cliente
• Su vida está limitada por el tiempo que el cliente interactúa con
el servidor
• Los clientes acceden a session beans para acceder a la aplicación
en el servidor
n Con estado o sin estado
• Un carrito de compra o un convertidor de euros
n Entity bean
n Representa un objeto de negocio en un mecanismo de
almacenamiento persistente (p.ej., una base de datos)
• Un cliente, un producto, una cuenta
• La sincronización de los datos con el almacenamiento persistente
puede hacerla el EJB o el contenedor
n Permiten acceso compartido desde varios clientes
n Message bean
n Gestiona mensajes asíncronos (JMS) que llegan al servidor
para los que está suscritos
© Juan Pavón Mestras, UCM 2001-02 J2EE 49
Arquitectura EJB
Home
EJB
face
Inter
Contenedor
ce
nstan
EJB I
e
JB R emot
E face bject
Inter EJBO
bject
EJBO
25
La interfaz Home
import java.rmi.RemoteException;
import javax.ejb.*;
La interfaz EJBHome
n Métodos disponibles para el cliente
n La interfaz se extiende
• Un bean de sesión con estado con uno o más métodos create()
• Un bean de sesión sin estado con un sólo métodos create () sin
parámetros
• Un bean de entidad con uno o más métodos create() y finder()
package javax.ejb;
26
La interfaz Remote
n Definida por el desarrollador del EJB
n Métodos de la lógica del negocio
n Visión del EJB para el cliente
n El desarrollador nunca implementa esta interfaz
n Lo hace el contenedor de EJBs (las clases de interposición
que se generan al implantar el bean, y que gestiona las
transacciones, seguridad, etc.)
import java.rmi.RemoteException;
import javax.ejb.*;
La interfaz EJBObject
package javax.ejb;
27
La interfaz Local
n Métodos de la lógica del negocio que pueden acceder sólo
EJBs de la misma unidad de despliegue
n Hay que definir nuevas interfaces que extienden
EJBLocalHome y EJBLocalObject de manera similar a la
especificación de una interfaz remota
n Pero los métodos no lanzan la excepción RemoteException
import java.rmi.RemoteException;
import javax.ejb.*;
28
Programación del EJB
import java.rmi.RemoteException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext ;
public ConversorEuro () {}
public void ejbCreate() {}
public void ejbRemove() {}
public void ejbActivate() {}
public void ejbPassivate() {}
public void setSessionContext (SessionContext sc) {}
}
29
Programación del cliente del EJB
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject ;
import ConversorEuro; import ConversorEuroHome;
30
Descriptor de despliegue (deployment)
<!DOCTYPE ejb-jar PUBLIC ' -//Sun Microsystems , Inc.//DTD Enterprise JavaBeans 2.0//EN'
'http://java.sun.com/j2ee/dtds/ejb-jar_2_0.dtd'>
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name> ConversorEuro </ejb-name>
<home >ejb.ConversorEuroHome </home >
<remote>ejb.ConversorEuro</remote>
<ejb-class>ejb.ConversorEuroBean</ejb-class>
<session-type>Stateless</session -type>
<transaction-type>Container</ transaction -type>
</session>
</enterprise-beans >
<assembly-descriptor>
<container-transaction>
< method>
<ejb-name>ConversorEuro</ejb-name>
< method-name >*</ method-name >
</ method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
Tipos de componentes
<<Interfaz>> <<Interfaz>>
EntityBean SessionBean
MyEntityBean MySessionBean
31
Componentes de sesión
Componentes de Entidad
32
Componentes de sesión sin estado
33
Componentes de sesión con estado
Cliente
Java Cart CartBean
CartHome
Navegador
Cliente
Móvil JNDI
34
Componentes de sesión con estado
Servidor EJB
Cliente
Windows
Contenedor
Cliente cart
cart.
cart...additem
cart additem(66)
(66)
additem(59)
additem(59)
Java Cart CartBean
cart..purchase
cart purchase()
()
Navegador cart . remove
cart. remove()
() CartHome
Cliente
Móvil JNDI
Componentes de entidad
con persistencia basada en el componente
35
Componentes de entidad
con persistencia basada en el contenedor
36
Interacción entre componentes de sesión y
de entidad
n … continuamos
n El componente de sesión recibe una referencia remota
a la instancia de EJB de entidad
n El componente de sesión realiza invocaciones sobre el
componente de entidad
n Cuando se lanza la transacción sobre los EJB de
entidad, el contenedor lanza el SQL para almacenar en
las fuentes de datos los datos modificados por el
componente de sesión (a través de CMP o BMP, según
corresponda).
Cliente
Windows
Contenedor
OrderHome
Cliente CartBean
Java Cart ejbLoad()
ejbLoad()
ejbStore()
ejbStore () Order
OrderBean
Navegador
BBDD
Cliente
Móvil JNDI
37
La interfaz de los componentes de sesión
38
EJB y CORBA
EJB RMI/IIOP
Session
de
erv icio DI
S JN
r bres
ntenedo Nom
Co
EJB
COSNaming
Entidad
JTS LDAP
ase
2-Ph it
m
Com EJB
BBDD Servidor
Interfaces IDL para COSTransactions Distributed
Home
© Juan Pavón Mestras, y Remote
UCM 2001-02 J2EE 2-Phase Commit 78
39
Bibliografía
n C. Szyperski, Component Software. Beyond Object-
Oriented Programming, Addison-Wesley, 1998
n S. Allamaraju et al., Professional Java Server
Programming J2EE 1.3 Edition, Wrox Press Ltd, 2001
n Sun Microsystems, Inc (2001) The J2EE Tutorial
n Sun Microsystems, Inc (2001) Enterprise JavaBeans
Specification, v2.0
(http://java.sun.com/j2ee/docs.html#specs )
n BEA systems, Using Enterprise JavaBeans, Designing a
WebLogic EJB application, (www.weblogic .com)
40