- Enterprise JavaBeans
-
Enterprise JavaBeans
Enterprise JavaBeans Desarrollador Oracle - Sun Microsystems http://java.sun.com/products/ejb/ Información general Última versión estable 3.0 Escrito en Java Sistema operativo Máquina virtual Java Los Enterprise JavaBeans (también conocidos por sus siglas EJB) son una de las API que forman parte del estándar de construcción de aplicaciones empresariales J2EE (ahora JEE 5.0) de Oracle Corporation (inicialmente desarrollado por Sun Microsystems). Su especificación detalla cómo los servidores de aplicaciones proveen objetos desde el lado del servidor que son, precisamente, los EJB:
- Comunicación remota utilizando CORBA
- 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.
La especificación de EJB define los papeles jugados por el contenedor de EJB y los EJB, además de disponer los EJB en un contenedor.
Contenido
Definición
Los EJB proporcionan un modelo de componentes distribuido estándar del lado del servidor. El objetivo de los EJB es dotar al programador de un modelo que le permita abstraerse de los problemas generales de una aplicación empresarial (concurrencia, transacciones, persistencia, seguridad, etc.) para centrarse en el desarrollo de la lógica de negocio en sí. El hecho de estar basado en componentes permite que éstos sean flexibles y sobre todo reutilizables.
No hay que confundir los Enterprise JavaBeans con los JavaBeans. Los JavaBeans también son un modelo de componentes creado por Oracle - Sun Microsystems para la construcción de aplicaciones, pero no pueden utilizarse en entornos de objetos distribuidos al no soportar nativamente la invocación remota (RMI).
Tipos de Enterprise JavaBeans
Existen tres tipos de EJBs:
- EJB de Entidad (Entity EJBs): su objetivo es encapsular los objetos del lado del servidor que almacena los datos. Los EJB de entidad presentan la característica fundamental de la persistencia:
- Persistencia gestionada por el contenedor (CMP): el contenedor se encarga de almacenar y recuperar los datos del objeto de entidad mediante el mapeo o vinculación de las columnas de una tabla de la base de datos con los atributos del objeto.
- Persistencia gestionada por el bean (BMP): el propio objeto entidad se encarga, mediante una base de datos u otro mecanismo, de almacenar y recuperar los datos a los que se refiere, por lo cual, la responsabilidad de implementar los mecanismos de persistencia es del programador.
Nota: En la documentación de java para JEE 5.0, los entity beans desaparecen ya que son remplazados por JPA (Java Persistence API).[1]
- EJB 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 por otros componentes disponibles en el servidor. Puede haber dos tipos:
- Con estado (stateful). Los beans de sesión con estado son objetos distribuidos que poseen un estado. El estado no es persistente, pero el acceso al bean se limita a un solo cliente.
- Sin estado (stateless). Los beans de sesión sin estado son objetos distribuidos que carecen de estado asociado permitiendo por tanto que se los acceda concurrentemente. No se garantiza que los contenidos de las variables de instancia se conserven entre llamadas al método.
- EJB dirigidos por mensajes (Message-driven EJBs): son los únicos beans con funcionamiento asíncrono. Usando el Java Messaging System (JMS), se suscriben a un tema (topic) o a una cola (queue) y se activan al recibir un mensaje dirigido a dicho tema o cola. No requieren de su instanciación por parte del cliente.
Funcionamiento de un Enterprise JavaBean
Los EJBs se disponen en un contenedor EJB dentro del servidor de aplicaciones. La especificación describe cómo el EJB interactúa con su contenedor y cómo el código cliente interactúa con la combinación del EJB y el contenedor.
Cada EJB debe facilitar una clase de implementación Java y dos interfaces Java. El contenedor EJB creará instancias de la clase de implementación Java para facilitar la implementación EJB. Las interfaces Java son utilizadas por el código cliente del EJB. Las dos interfaces, conocidas como interfaz "home" e interfaz remota, especifican las firmas de los métodos remotos del EJB. Los métodos remotos se dividen en dos grupos:
- métodos que no están ligados a una instancia específica, por ejemplo aquellos utilizados para crear una instancia EJB o para encontrar una entidad EJB existente. Estos métodos se declaran en la interfaz "home".
- métodos ligados a una instancia específica. Se ubican en la interfaz remota.
Dado que se trata simplemente de interfaces Java y no de clases concretas, el contenedor EJB genera clases para esas interfaces que actuarán como un proxy en el cliente. El cliente invoca un método en los proxies generados que a su vez sitúa los argumentos método en un mensaje y envía dicho mensaje al servidor EJB. Los proxies usan RMI-IIOP para comunicarse con el servidor EJB.
El servidor llamará a un método correspondiente a una instancia de la clase de implementación Java para manejar la llamada del método remoto.
Interfaz "Home"
Como indicamos anteriormente, la interfaz "home" permite al código cliente manipular ciertos métodos de clase del EJB, esto es, métodos que no están asociados a ninguna instancia particular. La Interface HOME nos pemite crear las instancias de EJB de entidad o sesión a través del método create que puede ser sobrecargado
La especificación EJB 1.1 establece el tipo de métodos de clase que se pueden definir como métodos que crean un EJB o para encontrar un EJB existente si es un "bean" de entidad.
La especificación EJB 2.0 permite a los desarrolladores de aplicaciones definir nuevos métodos de clase sin limitarse a su sola creación, borrado y búsqueda.
Interfaz remota
La interfaz remota especifica los métodos de instancia públicos encargados de realizar las operaciones.
Una sesión bean puede implementar múltiples interfaces, con cada interfaz apuntada por un tipo de cliente diferente. La interfaz local es para aquellos clientes que corren en la misma máquina virtual que el contenedor EJB. La interfaz remota es para clientes remotos. Frente a una consulta del cliente, el contenedor retorna un stub serializado del objeto que implementa la interfaz remota. El stub conoce cómo pasar llamadas a procedimientos remotos (RPCs) al servidor. Este tipo de interfaz es también un POJO.
Clase de implementación EJB
Las clases de implementación EJB las suministran los desarrolladores de aplicaciones, que facilitan la lógica de negocio ("business logic") o mantienen los datos ("business data") de la interfaz de objeto, esto es, implementan todos los métodos especificados por la interfaz remota y, posiblemente, algunos de los especificados por la interfaz "home".
Correspondencia entre métodos de interfaz y métodos de implementación
Las llamadas al método en la interfaz "home" se remiten al método correspondiente de la clase de implementación del bean con el prefijo 'ejb' añadido y con la primera letra de la interfaz "home" convertida en mayúscula y manteniendo exactamente el mismo tipo de argumentos. Por ejemplo:
create ---> ejbCreate.
Las llamadas a métodos en la interfaz remota se remiten al método de implementación correspondiente del mismo nombre y argumentos en la clase del bean.
la complejidad ciclomatica de las unidades semanticas de navegacion no cumplen el estandar UML 2.0 que recomienda el uso de screen shots sobre componentes programaticos.Historia de los Enterprise JavaBeans
La especificación EJB ha ido evolucionando a la par que lo hacía la propia especificación J2EE. Las diferentes versiones que han existido hasta la fecha son:
- EJB 1.0: la especificación original
- EJB 1.1: la primera incluida dentro de J2EE
- EJB 2.0: incluida en J2EE 1.3, añadía las interfaces Locales y los Message-Driven beans.
- EJB 2.1: incluida en la última revisión de J2EE, la 1.4.
- EJB 3.0: Ahora con Cluster y está incluida en JEE 5.0
La nueva especificación de EJB 3.0 simplifica el proceso de creación de EJB y facilita la implementación de la persistencia de una nueva manera por medio del api JPA.
Esta especificación está disponible en la nueva versión de J2EE renombrada JEE 5.0.
Notas
Bibliografía recomendada
- Enterprise JavaBeans, 4th edition, (2004) de Richard Monson-Haefel [O'Reilly, ISBN 0-596-00530-X]
- Mastering Enterprise JavaBeans, 2nd edition (2001), de Ed Roman [Wiley&Sons, ISBN 0-471-41711-4]
- Bitter EJB (2003) de Bruce Tate [Manning, ISBN 1-930110-95-2]
- Head First EJB (2003), de Kathy Sierra y Bert Bates [O'Reilly, ISBN 0-596-00571-7]
Enlaces externos
Categoría: Tecnologías Java EE
Wikimedia foundation. 2010.