JBOSS - EJB 3.0 - PowerPoint PPT Presentation

1 / 26
About This Presentation
Title:

JBOSS - EJB 3.0

Description:

{ public void withdraw(double amount) { long startTime = System.currentTimeMillis ... 1. bind pointcut='public void com.mc.BankAccountDAO- withdraw(double amount) ... – PowerPoint PPT presentation

Number of Views:76
Avg rating:3.0/5.0
Slides: 27
Provided by: pablojr
Category:
Tags: ejb | jboss | dbl

less

Transcript and Presenter's Notes

Title: JBOSS - EJB 3.0


1
JBOSS - EJB 3.0
  • Trabajo de Investigación
  • Asignatura de Sistemas Distribuidos
  • Curso 5º de Ingeniería Informática
  • Alumno Pablo J. Rosique Vidal
  • Profesor Diego Sevilla Ruiz

2
Índice y Contenido
  • JBoss AS 4.0.x
  • J2EE Aspect-Oriented Programming (AOP)
  • Contenedor EJBs
  • Contenedor Servlets y JSPs (tomcat)
  • EJB 3.0
  • Motivación
  • Implementación del Modelo
  • Tipos de Entidades
  • EJBs de Entidad
  • Persistencia (BMP, CMP)
  • EJBs de Sesion
  • EJBs Dirigidos por Mensajes
  • Funcionamiento de los Enterprise JavaBean
  • Anotaciones (Xdoclet)
  • Transacciones
  • Roles y Seguridad
  • Conclusiones

3
JBoss AS 4.0.x
  • Primer servidor de aplicaciones de código abierto
    disponible en el mercado
  • Es una arquitectura orientada a servicios
  • Por estos motivos, JBoss es una plataforma muy
    popular de middleware para desarrolladores
  • Las características más destacadas de JBoss son
  • Producto de licencia de código abierto sin coste
    adicional
  • Cumple los estándares
  • Confiable a nivel de empresa
  • Orientado a arquitectura de servicios
  • Es flexible y consistente
  • Ofrece servicios del middleware para cualquier
    objeto de Java
  • Soporte completo para Java Management Extensions
    (JMX)

4
J2EE Aspect-Oriented Programming (AOP)
  • Java 2 Enterprise Editions (J2EE)
  • Comprenden un conjunto de especificaciones y
    funcionalidades orientadas al desarrollo de
    aplicaciones empresariales
  • J2EE no deja de ser un estándar de desarrollo,
    construcción y despliegue de aplicaciones
  • Algunas de sus funcionalidades más importantes
    son
  • Acceso a base de datos (JDBC)
  • Utilización de directorios distribuidos (JNDI)
  • Acceso a métodos remotos (RMI/CORBA)
  • Funciones de correo electrónico (JavaMail)

5
J2EE Aspect-Oriented Programming (AOP)
  • Qué es AOP?
  • Los aspectos en la metodología de desarrollo AOP
    se basa en el cross-cutting concern
  • AOP se beneficia principalmente del entorno J2EE
    (pero no solo de este)
  • Existen muchas implementaciones especificas de
    AOP (AspectJ, JBoss-AOP, etc.)
  • Las construcciones AOP se definen en JAVA y están
    vinculadas a una aplicación vía XML o por
    anotaciones

6
Creando Aspectos en JBoss AOP
  • Dificulta el desarrollo del código
  • El código crece rápidamente
  • Dificulta la extensión de la funcionalidad
  • public class BankAccountDAO
  • public void withdraw(double amount)
  • long startTime System.currentTimeMillis()
  • try // Actual method body...
  • finally
  • long endTime System.currentTimeMillis() -
    startTime
  • System.out.println("withdraw took "
    endTime)
  • El framework AOP rompe la llamada al método en
    partes
  • invocation.invokeNext() envuelve y delega en el
    método actual
  • Podemos extraer información contextual de la
    invocación

public class Metrics implements
org.jboss.aop.advice.Interceptor public
Object invoke(Invocation invocation) throws
Throwable long startTime
System.currentTimeMillis() try return
invocation.invokeNext() finally
long endTime System.currentTimeMillis() -
startTime java.lang.reflect.Method m
((MethodInvocation)invocation).method
System.out.println("method " m.toString() "
time " endTime "ms")
7
Aplicar Aspectos en JBoss AOP
1. ltbind pointcut"public void com.mc.BankAccountD
AO-gtwithdraw(double amount)"gt 2. ltinterceptor
class"com.mc.Metrics"/gt 3. lt/bind gt 4. ltbind
pointcut" com.mc.billing.-gt(..)"gt 5.
ltinterceptor class"com.mc.Metrics"/gt 6. lt/bind gt
  • El código de los aspectos se ejecutan en los
    puntos de corte (expresiones regulares)
  • Los puntos de entrada a eventos, pueden ser
    campos de acceso, llamadas a métodos, a
    constructores, etc.
  • Utiliza un formato XML para definir puntos de
    corte
  • Esto nos permite extender la funcionalidad de
    nuestro código sin que este crezca rápidamente

8
Enlazado de los aspectos
  • La compilación de la aplicación con los puntos de
    corte se puede realizar de varias formas
  • Preprocesado el código se preprocesa (similar a
    la implementación de C)
  • Post-procesado parchea el codigo binario
    generado, enlazando las clases con sus aspectos
  • AOP-aware la compilación genera los códigos
    binarios con los aspectos asociados
  • load-time la maquina virtual de JAVA es la que
    se encarga de asociar a cada clase su/s aspectos
    en caso necesario, cuando se carga la clase
  • run-time captura cada punto de corte en tiempo
    de ejecución y ejecuta el aspecto correspondiente
    en caso necesario (esta opción requiere un
    entorno de ejecución adicional, JVM en caso de
    JAVA)

9
Problemas del AOP
  • La depuración es difícil, debido a que
    sintácticamente el código aparece como separado
    pero en tiempo ejecución no lo esta
  • Se han considerado alternativas para tratar el
    código separado como tipos C
  • Otro problema del AOP es que la captura de los
    joinpoints son unidireccionales
  • Un entorno de desarrollo adecuado, puede ayudar a
    reducir los errores de este tipo

10
Motivación y Contenedor EJB
  • Un contenedor es el código añadido a una
    aplicación usando servicios a fin de añadir
    semántica y propiedades
  • Servicios persistencia, transacciones,
    seguridad, etc.
  • Implementación del modelo (Datos Lógica del
    Negocio) de calidad en un entorno empresarial
  • Desafíos
  • Representación de datos BD relacional/OO, XML
    LAPD
  • Acceso a datos JDBC, JNDI, DAO, JDO, etc.
  • Representación de la lógica del negocio
  • Todo esto de un modo distribuido, eficiente
    escalable, seguro, transaccional, reutilizable,
    etc.

11
Implementación del Modelo EJB
  • Los Enterprise JavaBeans son una de las API que
    forman parte del estándar J2EE, pueden ofrecer
  • comunicación remota utilizando CORBA
  • persistencia
  • transacciones
  • control de la concurrencia
  • eventos utilizando JMS (Java messaging service)
  • servicios de nombres y de directorio
  • seguridad
  • ubicación de componentes en un servidor de
    aplicaciones
  • Los EJBs proporcionan un modelo de componentes
    distribuido estandar para el lado del servidor

12
Implementación del Modelo
  • El objetivo es compartir entidades del modelo
    entre aplicaciones
  • Compartir la lógica del negocio (lógica del
    negocio cercana a los datos)

13
Tipos de Enterprise JavaBeans
  • EJBs de Entidad (Entity EJBs) su objetivo es
    encapsular los objetos de lado de servidor que
    almacenan los datos (persistencia)
  • Persistencia gestionada por el bean (BMP) el
    propio objeto entidad se encarga, mediante una BD
    u otro mecanismo, de almacenar y recuperar los
    datos a los que se refiere
  • La responsabilidad de implementar los mecanismos
    de persistencia es del programador
  • Atributos para la persistencia, contexto EJB y
    propiedades
  • Constructor de inicialización
  • Métodos de creación localización, borrado,
    sincronización, etc.
  • Requiere la declaración de ciertas propiedades de
    configuración del bean (fichero ejb-jar.xml)

ltentitygt ltejb-namegtProductolt/ejb-namegt lthomegtPro
ductoHomelt/homegt ltremotegtProductolt/remotegt ltejb-
classgtProductoBeanlt/ejb-classgt ltpersistence-typegt
beanlt/persistence-typegt ltprim-key-classgtjava.lang
.Stringlt/prim-key-classgt ltreentrantgtFalselt/reentr
antgt lt/entitygt
14
Persistencia CMP 2.x
  • Persistencia gestionada por el contenedor (CMP)
    el contenedor se encarga de almacenar y recuperar
    los datos del objeto de entidad mediante un
    mapeado en una tabla de una BD
  • Todo lo relativo a la persistencia se indica
    declarativamente en ficheros de configuración

ltentitygt ltejb-namegtProductolt/ejb-namegt ltejb-clas
sgtProductoBeanlt/ejb-classgt lthomegtProductoHomelt/ho
megt ltremotegtProductolt/remotegt ltpersistence-typegt
Containerlt/persistence-typegt ltprimkey-fieldgtidlt/p
rimkey-fieldgt ltprim-key-classgtjava.lang.Stringlt/p
rim-key-classgt ltreentrantgtTruelt/reentrantgt ltcmp-
versiongt2.xlt/cmp-versiongt ltcmp-fieldgt ltfield-na
megtidlt/field-namegt lt/cmp-fieldgt ltcmp-fieldgt ltf
ield-namegtnombrelt/field-namegt lt/cmp-fieldgt lt/e
ntitygt
15
Persistencia CMP 2.x
  • En la configuración definimos los métodos de
    localización utilizando un lenguaje neutral
    EJB-QL (ej. SELECT OBJECT (P) FROM Productos AS P)

ltquerygt ltquery-methodgt ltmethod-namegtfindByNombr
elt/method-namegt ltmethod-paramsgt ltmethod-param
gtjava.lang.Stringlt/method-paramgt lt/method-params
gt lt/query-methodgt ltejb-qlgt ...
lt/ejb-qlgt lt/querygt
  • Modelo ideal cuando desarrollamos el sistema de
    información desde el principio

16
Tipos de Enterprise JavaBeans
  • EJBs de Sesión (Session EJBs) gestionan el flujo
    de la información en el servidor. Generalmente
    sirven a los clientes como una fachada de los
    servicios proporcionados
  • Con estado (stateful) son objetos distribuidos
    que poseen un estado, que no es persistente, pero
    el acceso al bean se limita a un solo cliente
  • Sin estado (stateless) son objetos distribuidos
    que carecen de estado asociado permitiendo por
    tanto que se los acceda concurrentemente

ltsessiongt ltejb-namegtGestorPedidoslt/ejb-namegt ltho
megtGestorPedidosHomelt/homegt ltremotegtGestorPedidos
lt/remotegt ltejb-classgtGestorPedidosBeanlt/ejb-class
gt ltsession-typegtStatefullt/session-typegt lttransac
tion-typegtContainerlt/transaction-typegt lt/sessiongt
  • EJBs dirigidos por mensajes (Message-driven
    EJBs) los únicos beans con funcionamiento
    asíncrono. Usando el Java Messaging System (JMS),
    se suscriben a un tópico (topic) o a una cola y
    se activan al recibir un mensaje dirigido a dicho
    tópico o cola. No requieren de su instanciación
    por parte del cliente (componentes anónimos)

17
Funcionamiento de los Enterprise JavaBean
  • Se diseñan componentes que ofrecen una
    funcionalidad concreta
  • Los componentes se disponen en un contenedor EJB
    dentro del servidor de aplicaciones (ej. JBoss)
  • El servidor puede distribuir cada componente en
    distintos clusters (hosts, estaciones de trabajo,
    etc.)
  • Las aplicaciones empresariales son cada vez mas
    complejas y distribuidas, de modo que es muy
    importante automatizar los procesos de
    mantenimiento

18
Funcionamiento de los Enterprise JavaBean
  • Cada EJB debe facilitar una clase de
    implementación Java y dos interfaces Java
  • Interface Home permite al código cliente
    manipular ciertos métodos de clase del EJB
    (métodos que no están asociados a ninguna
    instancia particular)
  • Interface Remoto especifica los métodos de
    instancia públicos encargados de realizar las
    operaciones
  • Estas Interfaces especifican las signaturas de
    los métodos remotos del EJB, pueden ser
  • métodos que no están ligados a una instancia
    específica
  • métodos ligados a una instancia específica
  • Se debe mantener la correspondencia entre métodos
    de interfaz y métodos de implementación

19
Modelo de sesión EJB
  • Trabajamos simplemente con interfaces Java y no
    con clases concretas
  • El cliente invoca un método en los proxies
    generados
  • El servidor llamará al método correspondiente de
    la instancia de la clase de implementación Java

20
Anotaciones de Metadatos
  • Esta es una de las claves de EJB 3.0
  • Se usa principalmente por los desarrolladores
    para especificar requisitos en el comportamiento
    del contenedor
  • Las anotaciones de metadatos se utilizan como una
    alternativa a los Descriptores de Despliegue
    (Deployment Descriptors) de versiones anteriores
  • Ambas posibilidades se pueden usar de forma
    combinada

21
Anotaciones (Xdoclet)
  • Toda esta meta-información es conveniente
    expresarla dentro del código (herramienta XDocLet)

/ _at_ejbbean type"CMP" name"Producto"
cmp-version"2.x" primary-key"id
schema"Productos" _at_ejbinterface
remote-class"Producto" _at_ejbhome
remote-class"ProductoHome" _at_ejbfinder
signature"java.util.Collection findAll()"
query"SELECT OBJECT(o) FROM Productos AS o"
_at_ejbpk class"java.lang.String" / pubic
abstract class ProductoBean implements EntityBean
/ _at_ejbinterface-method
_at_ejbpersistent-field _at_ejbpk-field / public
abstract String getId()
22
Transacciones
  • Los componentes EJB pueden ser transaccionales
  • El contenedor garantiza
  • La atomicidad de las operaciones
  • La consistencia de los datos
  • El aislamiento transaccional
  • La perdurabilidad de las modificaciones
  • Existen distintos modelos de transaccionalidad,
    como
  • Required arranca una transacción si no hay
    ninguna actual
  • RequiresNew inicia siempre una nueva transaccion
    y suspende las que han dejado de usarse
  • Supports reutiliza transacciones existentes

23
Transacciones
  • Las transacciones de los EJB entidad son
    gestionadas por el contenedor
  • Para los sesión, dos alternativas (fichero
    configuración)
  • Gestionada por el bean
  • Gestionada por el contenedor (recomendada)
  • Situaciones que abortan una transacción
  • Una excepción de Runtime
  • La instancia que la lanza queda descartada.
  • Marcar la transacción como rollback
  • context.setRollbackOnly()
  • Transacciones gestionadas por el contenedor

24
Roles y Seguridad
  • Desarrollo de aplicaciones basada en el
    ensamblado de componentes
  • Rol ensamblador
  • Rol deployer
  • Ficheros de configuración
  • Pueden definir enlace entre componentes,
    transaccionalidad, control de ejecución de
    métodos, etc.

ltmethod-permissiongt ltrole-namegtGerentelt/role-name
gt ltmethodgt ltejb-namegt Producto
lt/ejb-namegt ltmethod-namegt setPrecioBase
lt/ejb-namegt lt/methodgt ltmethod-permissiongt
25
Conclusiones
  • Existe mucho soporte de servidores de
    aplicaciones (JBoss, WebLogic, etc.)
  • Eficiente (controla el uso de objetos)
  • Transaccional mediante reglas declarativas
  • Reglas de seguridad
  • Orientado a la programación con componentes
  • EJB 3.0, ofrece una nueva, simplificada y
    mejorada API, para el desarrollo de aplicaciones
    empresariales distribuidas
  • Independiente de la plataforma
  • Ejecución JAVA y protocolo CORBA/IIOP
  • Mejora la arquitectura y reduce la complejidad de
    las versiones anteriores (EJB 2.1)
  • Permite anotaciones para facilitar su uso y AOP
    para el mejorar la extensibilidad

26
Bibliografía
  • JBoss AOP
  • http//docs.jboss.org/aop/1.3/aspect-framework/use
    rguide/en/pdf/jbossaop_userguide.pdf
  • http//docs.jboss.org/aop/1.3/aspect-framework/
  • http//aopalliance.sourceforge.net/
  • EJB 3.0
  • http//java.sun.com/products/ejb/
  • http//java.sun.com/products/ejb/docs.html
  • http//www.oracle.com/technology/tech/java/ejb30.h
    tml
Write a Comment
User Comments (0)
About PowerShow.com