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.