8. Enterprise Java Beans - PowerPoint PPT Presentation

About This Presentation
Title:

8. Enterprise Java Beans

Description:

Acceso a ficheros y directorios mediante java.io. AWT para muestra u obtenci n de informaci n desde teclado. ... Herramientas de instalaci n de beans y glue-codes. ... – PowerPoint PPT presentation

Number of Views:85
Avg rating:3.0/5.0
Slides: 45
Provided by: justonhid
Category:
Tags: beans | cods | enterprise | java

less

Transcript and Presenter's Notes

Title: 8. Enterprise Java Beans


1
8. Enterprise Java Beans
  • Gestión de Sistemas en Internet
  • Universidad Antonio de Nebrija, 2002/03
  • Justo N. Hidalgo Sanz

2
Middleware Rules!
3
EJBs en acción
4
Restricciones de los Enterprise Beans
  • Gestión o sincronización de threads.
  • Acceso a ficheros y directorios mediante java.io.
  • AWT para muestra u obtención de información desde
    teclado.
  • Escucha de socket, aceptación de conexiones,
    multicast.
  • SocketFactories.
  • Carga de bibliotecas nativas.

5
Fases de desarrollo de una aplicación J2EE
  • Creación de Enterprise Beans.
  • Creación de componentes Web.
  • Creación de Cliente de Aplicación J2EE.
  • Ensamblaje de Aplicación J2EE.
  • Despliegue de Aplicación J2EE.

6
Creación de un Enterprise Bean
  • Quién desarrollador Software.
  • Qué
  • Codifica y compila el código Java.
  • Especifica el descriptor de despliegue.
  • Añade los .class al fichero .jar EJB.
  • Salida .jar.

7
Creación de componentes Web
  • Quién diseñador web y desarrollador.
  • Qué
  • Codifica y compila código Java.
  • Escribe ficheros .html y .jsp.
  • Especifica el descriptor de despliegue para el
    componente web.
  • Añade .class, .html, .jsp y fichero de despliegue
    al fichero .war.
  • Salida .war

8
Creación de cliente de Aplicación J2EE
  • Quién desarrollador de software.
  • Qué
  • Codifica y compila código Java.
  • Descriptor de despliegue.
  • Añade .class a fichero .jar para el cliente.
  • Salida .jar

9
Ensamblaje
  • Quién desarrollador de software.
  • Qué
  • Ensambla enterprise beans (.jar) y componentes
    web (.war) en una aplicación J2EE (.ear).
  • Descriptor de despliegue.
  • .ear

10
Despliegue
  • Quién administrador del sistema.
  • Qué
  • Añade el .ear al servidor J2EE.
  • Configura la aplicación J2EE para el entorno de
    producción, modificando el fichero de despliegue.
  • Instala el .ear en el servidor J2EE.
  • Salida aplicación J2EE configurada e instalada.

11
Tipos de Enterprise Beans
  • Componente server-side que puede desplegarse en
    un entorno distribuido multi-capa.
  • Tres tipos de beans
  • Session beans.
  • Entity beans.
  • Message-driven beans.

12
Session Beans (I)
  • Representa el trabajo realizado por el código
    cliente que lo llama. Objetos de proceso de
    negocio. Representan la lógica de negocio.
  • Viven tanto como la sesión del código cliente que
    invoca al session bean.
  • No son compartidos por clientes.
  • El cliente no instancia directamente session
    beans, es el EJB server.

13
Session Beans (y II)
  • Subtipos
  • Stateful Session Beans diseñado para servir a
    procesos de negocio que se ejecuta a través de
    múltiples métodos o transacciones. Para ello, los
    sful sbeans almacenan el estado de un cliente
    determinado.
  • Stateless Session Beans paradigma de single
    request. Más tolerante a fallos. Se puede simular
    un sful sbean, pasando parámetros de estado a un
    sless sbean.

14
Entity Beans
  • Modelan los datos permanentes que el proceso de
    negocio utiliza. Los entity beans perduran en el
    tiempo.
  • Pueden ser utilizados por múltiples clientes
    simultaneamente para ello, transacciones.
  • Subtipos
  • Bean-managed Persistent Entity Beans (BMP)
    persistente a mano. Se debe escribir con un API
    de persistencia, como JDBC.
  • Container-managed Persistent Entity Beans (CMP)
    persistencia automática.

15
EJB Container/Server
  • Son entidades abstractas entre el cliente y el
    bean, nadie sabe que existen.
  • Responsabilidades
  • Gestión de recursos y gestión del ciclo de vida
    del bean.
  • Gestión del estado.
  • Transacciones.
  • Seguridad.
  • Persistencia.
  • Acceso remoto y transparencia de localización.
  • Herramientas de instalación de beans y
    glue-codes.
  • Características de contenedores especializados.

16
(No Transcript)
17
Enterprise Beans en detalle (I)
  • Componentes
  • Interfaz remota (Remote interface)
  • define los métodos de negocio que un cliente
    puede invocar de un bean.
  • Extiende javax.ejb.EJBObject.
  • Home interface
  • Define los métodos para que un cliente cree,
    encuentre o elimine un enterprise bean.
  • Extiende javax.ejb.EJBHome.
  • Enterprise Bean class
  • Bean.
  • Implementa javax.ejb.EnterpriseBean (que a su vez
    implementa Serializable).

18
Enterprise Beans en detalle (II)
  • Un cliente no invoca directamente un bean, sino
    que lo hace a través del container. Así
  • El bean no es network-enabled.
  • El contenedor puede realizar otras tareas
  • Seguridad.
  • Instance pooling.
  • Transacciones.
  • Balanceo de cargas.
  • ...
  • El cliente accede a una HomeObject (EJB Factory)

19
Enterprise Beans en detalle (y III)
  • Descriptor de despliegue (deployment descriptor)
  • Permiten que los contenedores EJB provean
    servicios middleware implícitos a los Ebeans, sin
    necesidad de implementar nada
  • Ciclo de vida.
  • Persistencia para entity beans.
  • Transacciones.
  • Seguridad.
  • Es un fichero XML.

20
Session Beans en detalle (I)
  • Implementan javax.ejb.SessionBean
  • Métodos de utilización del EJB container
  • setSessionContext.
  • ejbCreate(...) este grupo de métodos inicializa
    un session bean.
  • ejbPassivate el container puede pasar a estado
    pasivo a alguna instancia, si hay muchas
    (persistencia).
  • ejbActivate utilización de un bean que ha sido
    pasivizado.
  • ejbRemove limpieza de un método antes de
    eliminarse.
  • Métodos de negocio aquellos específicos de la
    aplicación. Para que el cliente pueda
    utilizarlos, han de existir en la interfaz remota.

21
Session Beans en detalle (II)
  • Cómo invocar Session Beans desde un cliente
  • Buscar un Home Object.
  • JNDI
  • Utilizarlo para crear un EJB Object.
  • En los stateless, no lleva argumentos (para
    qué!).
  • Invocar métodos de negocio sobre el EJB Object.
  • Eliminar el EJB Object.
  • A lo mejor no se destruye, si hay pooling.

22
Session Beans en detalle (y III)
  • Stateful Session Beans
  • Pooling mediante pasivización LRU ?
  • Excepción un bean dentro de una TRANSACCIÓN no
    puede ser pasivo.

23
Entity Beans
  • Representan los objetos entidad en el modelo de
    análisis.
  • Un entity bean es un único punto lógico de
    acceso, pero desde cualquier cliente.
  • Un session bean sólo es accesible por un solo
    cliente.

24
Servicios de persistencia (I)
  • Callbacks de contenedor con información acerca
    del progreso de la transacción actual
  • afterBegin
  • loadStateFromDatabase
  • beforeCompletion
  • saveStateToDatabase
  • Soporte para acceso concurrente
  • Diferentes estrategias
  • Dejar el control de concurrencia a la base de
    datos
  • Sincronización de acceso a un entity bean con un
    id particular.

25
Servicios de persistencia (y II)
  • Mantenimiento de caché entre transacciones
  • Provisión de todo el código de gestión de
    persistencia
  • Para muchos, esta es la ventaja principal de todo
    J2EE.

26
Mejoras con EJB2.0
  • CMP es más completo que en EJB1.1
  • Optimización de accesos a la base de datos.
  • Abstract accessors
  • Interfaces locales
  • Relaciones
  • EQL (EJB Query Language)

27
Abstract Accessors (I)
  • EJB2.0 define los campos CMP como abstractos.
    P.e. para el campo CMP nombre
  • Public abstract String getNombre()
  • Public abstract void setNombre(String nombre)
  • OJO! Un campo CMP no tiene por qué estar
    directamente relacionado con una columna de la
    base de datos.

28
Abstract Accessors (y II)
  • Ventajas de este concepto
  • El contenedor está la mando, por lo que
  • lazy loading de beans
  • Actualizaciones tonificadas (tuned updates)
  • El contenedor sabe exactamente qué campos se han
    modificado en una transacción, por lo que
  • Tras acabar la transacción, y realizar un commit,
    el contenedor puede actualizar las columnas
    relacionadas con los campos CMP modificados.

29
Interfaces locales
  • La versión EJB1.1 sólo tenía interfaces remotas
    (RMI por debajo) gt prestaciones.
  • Ahora se introduce la opción local gt semántica
    de paso por mensajes de Java.
  • Para qué es útil? P.e.
  • El stateless session bean tiene una interfaz
    remota para los clientes remotos. Este bean se
    comunica con un entity bean a través de su
    interfaz home local.

30
Relaciones (I)
  • Container-managed relationships
  • Los bean providers definen las relaciones entre
    sus beans en el descriptor de despliegue.
  • El contenedor genera todo el código Java y SQL
    necesario.

31
Relaciones (II). Tipos
  • Direccionalidad
  • Unidireccional o bidireccional.
  • Multiplicidad
  • One-to-one
  • One-to-many
  • Many-to-many

32
Relaciones (y III). Tareas
  • El contenedor se ocupa de
  • Mantenimiento de la integridad referencial
  • Manejo de la adición y eliminación de beans de
    una relación many.
  • Navegación a través de las relaciones mediante la
    generación de elementos SQL.

33
EJB Query Language
  • Lenguaje orientado a objetos de consulta a beans.
  • Parecido a SQL, pero internamente diferente.
  • Lo veremos con un ejemplo.

34
Entity Beans en detalle (I)
  • Persistencia
  • Opción 1 serialización Java.
  • No muy sofisticada (query obtención de todas las
    cuentas con más de 1.000 euros).
  • Opción 2 almacenamiento de cada parte de un
    objeto en una BDR object-relational mapping
  • Handcrafting.
  • TOPLink, JavaBlend (OK, pero lentos).
  • Entity Beans tratar los datos como objetos.

35
Entity Beans en detalle (II)
  • Componentes
  • Entity Bean class
  • clase java que modela los datos persistentes.
  • javax.ejb.EntityBean
  • Remote interface.
  • Home interface.
  • Primary Key class
  • identificador único para la entity bean.
  • Ha de ser serializable.
  • Descriptor de despliegue.

36
Entity Beans en detalle (III)
  • Características
  • Sobreviven a fallos.
  • Las entity beans son vistas del repositorio.
  • Varias instancias entity pueden estar
    representando los mismos datos thread safe ? o
    data corruption ?
  • Sólo puede haber un thread dentro de una
    instancia bean.
  • Utilización de transacciones.
  • Pooling ejbActivate, ejbPassivate, ejbStore,
    ejbLoad.

37
Entity Beans en detalle (y IV)
  • Características (II)
  • ejbCreate implica creación de datos en la BBDD.
  • Bean-managed devuelve el primary key class.
  • Container-managed devuelve null.
  • ejbFind
  • todos los métodos de búsqueda empiezan así.
  • Al menos ejbFindByPrimaryKey.

38
Message-driven Beans
  • JMS (Java Message Service)
  • API Java que provee interfaces para la creación,
    envío, recepción y lectura de mensajes.
  • Framework de comunicación
  • Débilmente acoplado
  • Asíncrono
  • Fiable
  • Tipos
  • Punto a punto
  • Publish/subscribe

39
Point-to-point
  • Dominio de mensajería basado en COLAS (queues)
  • Almacenamientos persistentes localizados en el
    destino JMS.
  • FIFO
  • Cada mensaje sólo tiene un consumidor.
  • Independiente del tiempo.
  • El consumidor ha de firmar la recepción del
    mensaje.

40
Publish-subscribe
  • Múltiples receptores por mensaje
  • Los mensajes se publican y se envían a tópicos.
  • Cada mensaje puede tener consumidores
  • Los subscriptores sólo pueden consumir mensajes
    que se hayan publicado tras su subscripción.
  • Los subscriptores en general han de estar activos
    para consumir los mensajes (excepción
    subscripciones durables).

41
JMS
Queue /topic
Sends To
Message Producer
creates
creates
creates
Session
Message
creates
Connection Factory
Connection
creates
Queue /topic
Gets From
Message Consumer
42
MSB
  • Un MSB es un listener de mensajes que puede
    consumir mensajes de una cola o subscripción
    duradera a través de un contenedor J2EE.
  • El contenedor invoca el bean como resultado de la
    llegada de un mensaje JMS.

43
Qué hace J2EE por nosotros
  • Separación natural entre presentación (JSPs) y
    lógica (EJBs).
  • J2EE se ocupa del sistema, nosotros de la
    aplicación.
  • El estado de la sesión también es gestionado por
    J2EE.
  • La gestión de conexiones con la base de datos
    también es tarea de J2EE.
  • RTM Reduced Time to Market, lo cual implica un
    mayor ROI Return Of Investment.

44
Bibliografía
  • Mastering Enterprise JavaBeans (theserverside.com)
  • Tutorial de J2EE (j2eedocs) java.sun.com
  • Professional Java Server Programming, J2EE 1.3
    Edition. Wrox.
Write a Comment
User Comments (0)
About PowerShow.com