Introducción a la tecnología EJB

Desarrollo basado en componentes

Con la tecnología J2EE Enterprise JavaBeans es posible desarrollar componentes (enterprise beans)

1.Desarrollar un bean Cliente que represente un cliente en una base de datos.

2.Usar "bean Cliente" en una aplicación de comercio electrónico en el que se requiera representar un cliente.

Se puede ver un componente como un objeto tradicional con un conjunto de servicios adicionales soportados en tiempo de ejecución por el contenedor de componentes.

El contenedor de componentes se denomina contenedor EJB funge como el sistema operativo en el que los componentes se encuentran.

RMI.

Con RMI es posible enviar peticiones a objetos que están ejecutándose en otra máquina virtual Java.

Servicios proporcionados por el contenedor EJB

Manejo de transacciones

Apertura y cierre de transacciones asociadas a las llamadas a los métodos del bean.

Seguridad

Comprobación de permisos de acceso a los métodos del bean

Concurrencia

Llamada simultánea a un mismo bean desde múltiples clientes

Servicios de red

Comunicación entre el cliente y el bean en máquinas distintas.

Gestión de recursos

Gestión automática de múltiples recursos en aplicaciones que no han sido traducidas a nuevos lenguajes

Ejemplos: colas de mensajes, bases de datos o fuentes de datos

Persistencia

Sincronización entre los datos del bean y tablas de una base de datos.

Gestión de mensajes

Manejo de Java Message Service (JMS).

Escalabilidad

Posibilidad de constituir clusters de servidores de aplicaciones con múltiples hosts

Adaptación en tiempo de despliegue

Posibilidad de modificación de todas estas características en el momento del despliegue del bean.

Funcionamiento de componentes EJB

El contenedor EJB es un programa Java que corre en el servidor y que contiene todas las clases y objetos necesarios para el correcto funcionamiento de los enterprise beans.

El cliente nunca se comunica directamente con el enterprise bean, sino que
el contenedor EJB proporciona unEJBObject que hace de interfaz.

El contenedor EJB se preocupa de cuestiones como:
 ¿Tiene el cliente permiso para llamar al método?
 Hay que abrir la transacción al comienzo de la llamada y cerrarla al terminar.
 ¿Es necesario refrescar el bean con los datos de la base de datos?

Pasos a seguir: 1. Cliente: "Necesito realizar una petición de compra al bean Broker."
2. EJBObject: "Espera un momento, necesito comprobar tus
permisos."
3. Contenedor EJB: "Sí, el cliente tiene permisos suficientes para llamar al método compra."
4. Contenedor EJB: "Necesito un bean Broker para realizar una
operación de compra. Y no olvidéis comenzar la transacción en el momento de instanciaros."
5. Pool de beans: "A ver... ¿a quién de nosotros le toca esta vez?".
6. Contenedor EJB: "Ya tengo un bean Broker. Pásale la petición del cliente."

Tipos de beans

Los beans de entidad

Representan un objeto concreto que tiene
existencia en alguna base de datos de la empresa.

Los beans dirigidos por mensajes

Los beans dirigidos por mensajes no necesitan
objetos EJBObject porque los clientes no se comunican nunca con ellos directamente.

Los bean de sesión

Representa un proceso o una acción de
negocio. No almacenan sus datos en una base de datos
después de que el cliente termine el proceso.

Beans de sesión sin estado

No se modifican con las llamadas de los
clientes. Los métodos que ponen a disposición de las aplicaciones clientes son llamadas que reciben datos y devuelven resultados, pero que no modifican internamente el estado del bean.

Ejemplo. Un componente que comprueba si un símbolo de compañía está
disponible en el mercado de valores y devuelve la última cotización registrada.

 Un componente que calcula la cuota del seguro de un cliente, basándose en los datos que se le pasa del cliente.

Beans de sesión con estado

Cada bean de sesión con estado almacena el estado
conversacional de un cliente que interactúa con el bean. Este estado conversacional se modifica conforme el cliente va realizando llamadas a los métodos de negocio del bean. El estado conversacional no se guarda cuando el cliente termina la sesión.

Ejemplo. Un ejemplo típico es un carrito de la compra, en donde el cliente va guardando uno a uno los ítem que va comprando.
 Un enterprise bean que reserva un vuelo y alquila un coche en un sitio Web de una agencia de viajes.

Desarrollo de beans

Consta de los siguientes 5 pasos:
1. Escribe y compila la clase bean que contiene a todos los métodos
de negocio.
2. Escribe y compila las dos interfaces del bean: home y componente.
3. Crea un descriptor XML del despliegue en el que se describa qué es el bean y cómo debe manejarse. Este fichero debe llamarse ejb- jar.xml.
4. Pon la clase bean, los interfaces y el descriptor XML del despliegue en un fichero EJB JAR . Podría haber más de un bean el mismo fichero EJB JAR, pero nunca habrá más de un descriptor de despliegue.
5. Despliega el bean en el servidor usando las herramientas proporcionadas por el servidor de aplicaciones.

Clientes de los beans

El cliente puede ser una clase Java cualquiera, ya sea un cliente aislado o un servlet que se está ejecutando en el contenedor web del servidor de aplicaciones. El código que deben ejecutar los clientes del bean es básicamente el mismo en cualquier caso.

Roles EJB

Desarrollador de beans

desarrolla los componentes enterprise beans.

Ensamblador de aplicaciones

compone los enterprise beans y las aplicaciones cliente para conformar una aplicación completa

Desplegador

despliega la aplicación en un entorno operacional particular (servidor de aplicaciones)

Administrador del sistema

configura y administra la infraestructura de computación y de red del negocio

Proporcionador del Contenedor EJB y Proporcionador del Servidor EJB:

un fabricante (o fabricantes) especializado en manejo de transacciones y de aplicaciones y otros servicios de bajo nivel. Desarrollan el servidor de aplicaciones.

Evolución de la especificación EJB

EJB 1.0

Propuesta inicial de la arquitectura EJB. Se introducen los beans de sesión y los de entidad (de implementación opcional). Persistencia manejada por el contendedor en los beans de entidad. Manejo de transacciones. Manejo de seguridad.

EJB 1.1

Implementación obligatoria de los
beans de entidad. Acceso al entorno de los beans mediante JNDI.

EJB 2.0

Manejo de mensajes con los beans dirigidos por mensajes.
Relaciones entre beans manejadas por el contenedor. Uso de interfaces locales entre beans que se encuentran en el mismo servidor. Consultas de beans declarativas, usando el EJB QL.

EJB 2.1

Soporte para servicios web.
Temporizador manejado por el contenedor de beans. Mejora en el EJB QL.

Ventajas de la tecnología EJB

Simplicidad.

Portabilidad de la aplicación.

Reusabilidad de componentes.

Posibilidad de construcción de aplicaciones complejas.

Separación de la lógica de presentación de la lógica de negocio.

Despliegue en muchos entornos operativos.

Despliegue distribuido.

Interoperabilidad entre aplicaciones.

Integración con sistemas no-Java.

Recursos educativos y herramientas de desarrollo.

Los beans de entidad se diferencian de los beans de sesión,
principalmente, en que son persistentes, permiten el acceso compartido,
tienen clave primaria y pueden participar en relaciones con otros beans de entidad

Los beans dirigidos por mensajes permiten que las aplicaciones J2EE reciban mensajes JMS
de forma asíncrona. Así, el hilo de ejecución de un cliente no se bloquea
cuando está esperando que se complete algún método de negocio de otro enterprise bean.

Elaborado por Samantha Gabriela Zamora Hernandez 5A. Construcción de Sistemas Distribuidos.