Enterprise JavaBeans (EJB)

(Enero de 2005)

Introducción

Los EJB son componentes del contexto de servidor que cubren la necesidad de intermediar entre la capa web y diversos sistemas empresariales. En este sentido conviene releer la arquitectura J2EE para ver el papel de interfaz que juegan estos componentes. Los EJB nacen para encapsular la lógica de negocio de una forma integrada, no quedando dispersa su representación en una pléyade de sistemas empresariales. Los EJB están especialmente pensados para integrar la lógica de la empresa que se encuentra en sistemas distribuidos, de tal forma que el desarrollador no tenga que preocuparse por la programación a nivel de sistema (como control de transsacciones, seguridad, etc.), sino que se centre en la representación de entidades y reglas de negocio.

Un ejemplo, supongamos que necesitamos que nuestra web presente información del producto, tales como características técnicas, precio, productos relacionados, disponibilidad en stock, fecha de entrega estimada por parte del operador logístico, etc. El proceso sería:

El estándar EJB especifica normas para la gestión de la transacción y para su seguridad, así como procedimientos de persistencia.

La tendencia apunta a que algunos de los EJB que tendremos en nuestras empresas sean componentes producidos por terceros, por ejemplo, componentes de integración de lógica de negocio que proveen los vendedores del ERP, CRM, etc. Incluso ocurre que el proveedor del EJB no sea el que te vende el contenedor de beans. Hay que diferenciar diversos roles que están surgiendo en el mercado:

Dicho de forma preliminar y por resumir: un EJB es un conjunto de clases y un archivo XML que describe el despliegue de dichas clases en un contenedor de EJB. Un EJB se ejecuta en un contenedor de EJB y ofrece al desarrollador del bean servicios que no necesita progranar (persistencia, seguridad, etc.).

La especificación J2EE insiste en conseguir la reusabilidad, ya que el programador de EJB debe centrarse en los problemas de representación de entidades y relaciones de negocio, tratando de que los detalles más concretos, más dependientes de la plataforma o del sistema queden para el contenedor EJB.

Del lado servidor hay que distinquir una arquitectura:

El servidor es el recipiente y gestor de los contenedores de EJB. Los contenedores son el contexto donde se ejecutan los beans. El servidor debe ofrecer una serie de servicios:

Los contenedores son el contexto de ejecución, que sirve de interfaz entre el bean y el servidor:

Sistema de nombrado: JNI

J2EE utiliza el API JNDI para acceder genéricamente a servicios de nombrado y directorio utilizando la tecnología Java. El API JNDI reside entre la aplicación y el servicio de nombres y hace que el servicio de nombres subyacente (RMI, CORBA, etc.) sea transparente para los componentes de la aplicación.

Tipos de EJB

Contenedores EJB

Ya hemos dicho que los contenedores son los entornos de ejecución de los EJB. Pero ofrecen bastante más:


Elementos del EJB

A la hora de desarrollar un EJB es necesario definir:

Cuando el cliente llama a un método es el contenedor el que recibe la solicitud y la delega (reenvia) a la instancia de la clase.

Los servicios de transacciones, seguridad y persistencia ya dijimos que los gestiona el servidor, pero podría ocurrir que los gestionase el propio bean.

Accede a un ejemplo de EJB de entidad