Este tema proporciona una visión general de alto nivel de arquitectura de componentes distribuida definida en la especificación de arquitectura de Sun Microsystems Enterprise JavaBeans™ (EJB) versión 2.x.
Todas las especificaciones de Enterprise JavaBeans y las descripciones de tecnología están disponibles en el sitio
Web java.sun.com.
Los beans de empresa proporciona varios beneficios para los desarrolladores de aplicaciones. Hacen lo siguiente:
- Permiten construir aplicaciones distribuidas combinando componentes desarrollados utilizando herramientas de varios
proveedores.
- Facilitan la escritura de aplicaciones. No es necesario ocuparse de detalles de bajo nivel de la gestión de
transacciones y estados, la multiplicidad de hebras, la agrupación de recursos y otras API complejas de bajo nivel. Sin
embargo, si es necesario, los programadores expertos siguen teniendo acceso directo a las API de nivel bajo.
- Se desarrollan una vez y se despliegan en varias plataformas sin que sea necesario volver a compilarlos ni
modificar el código fuente.
- Ofrecen compatibilidad entre la especificación EJB que controla el uso de beans de empresa y otras API Java™ y CORBA. Esto también
proporciona interoperabilidad entre beans de empresa y aplicaciones no Java.
- Beans de empresa
- Un bean de empresa es un componente no visual de una aplicación de empresa distribuida, orientada a transacciones. Los beans de empresa se despliegan habitualmente en contenedores EJB y se ejecutan en servidores EJB.
Puede personalizarlos cambiando sus descriptores de despliegue y puede ensamblarlos con otros beans para crear
aplicaciones nuevas. Hay tres tipos de beans de empresa: beans de sesión, beans de entidad y beans controlados por mensaje. Los beans de
sesión y los beans controlados por mensaje son componentes de grano grueso diseñados para modelar procesos de negocio
mientras que los beans de entidad se utilizan para modelar objetos de datos de grano fino.
- Beans de sesión: los beans de sesión son beans de empresa no persistentes.
Pueden ser con estado o sin estado.
- Beans de sesión con estado: actúan en nombre de un solo cliente y mantienen información de sesión específica
del cliente (llamada estado conversacional) entre varias llamadas de método y transacciones. Existen mientras dura una
sola sesión de cliente/servidor.
- Beans de sesión sin estado: no mantienen ningún estado conversacional) y se agrupan por contenedor para
manejar varias peticiones de varios clientes.
- Beans de entidad: los beans de entidad son beans de empresa que contienen datos persistentes y que pueden
guardarse en varios almacenes de datos persistentes. Cada bean de entidad lleva su propia identidad. Los beans de
entidad que gestionan su propia persistencia se llaman beans de entidad de persistencia controlada por bean (BMP). Los
beans de entidad que delegan su persistencia en su contenedor EJB se llaman beans de entidad de persistencia controlada
por contenedor (CMP).
- Beans controlados por mensaje: los beans controlados por mensaje son beans de empresa que reciben y procesan
mensajes de JMS. Al contrario que los beans de sesión o de entidad, los beans controlados por mensaje no tienen
interfaces. Solo se puede acceder a ellos a través de mensajería y no mantienen ningún estado conversacional. Los beans
controlados por mensaje permiten la comunicación asíncrona entre la cola y el escucha y proporcionan separación entre
el proceso de mensajes y la lógica de negocio.
- Vista de cliente remoto
- La especificación de vista de cliente remoto empezó a estar disponible con EJB 1.1. La vista de cliente
remoto de un bean de empresa es independiente de la ubicación.
Un cliente que esté ejecutándose en la misma JVM que una instancia de bean utiliza la misma API para acceder al bean
que un cliente que esté ejecutándose en una JVM distinto en el mismo sistema o en otro.
La vista de cliente remoto consta de dos interfaces
- Interfaz remota: la interfaz remota especifica los métodos de negocio remotos que puede llamar un cliente en
un bean de empresa.
- Interfaz inicial remota: la interfaz inicial remota especifica los métodos utilizados por clientes remotos
para buscar, crear y eliminar instancias de clases de bean de empresa.
- Vista de cliente local
- La especificación de vista de cliente local está disponible en EJB 2.0 o versiones posteriores.
Al
contrario que la vista de cliente remoto, la vista de cliente local de un bean depende de la ubicación. Para el acceso
de la vista de cliente local a un bean de empresa es necesario que el cliente local y el bean de empresa que
proporciona la vista de cliente local estén en la misma JVM. Por lo tanto, la vista de cliente local no proporciona la
transparencia de ubicación proporcionada por la vista de cliente remoto. Las interfaces locales y las interfaces
iniciales locales proporcionan soporte para el acceso ligero de beans de empresa que sean clientes locales. Los beans
de sesión y de entidad pueden acoplarse estrechamente con sus clientes, permitiendo el acceso sin la actividad general
asociada normalmente a las llamadas de método remotas. La vista de cliente local consta de dos interfaces:
- Interfaz local: la interfaz local es una versión ligera de la interfaz remota pero para clientes locales. Incluye métodos de lógica de negocio que puede llamar
un cliente local.
- Interfaz inicial local: la interfaz inicial local especifica los métodos utilizados por clientes locales
para localizar, crear y eliminar instancias de clases de bean de empresa.
- Vista de clientes de servicio Web
- En la especificación EJB 2.1, la arquitectura EJB introdujo el soporte de servicios Web. Un cliente para un bean de
sesión puede ser un cliente de servicio Web.
Un cliente de servicio Web puede utilizar la vista de clientes de servicio Web de un bean de sesión sin estado que
tiene una correspondiente interfaz de punto final de servicio.
- Interfaz de punto final de servicio
- La interfaz de punto final de servicio para un bean de sesión sin estado expone la funcionalidad del bean de sesión
como punto final de servicio Web. El documento WSDL (Lenguaje de descripción de servicios Web) para un servicio
Web describe el servicio Web como un conjunto de puntos finales que funcionan sobre mensajes. Un documento WSDL puede
incluir la interfaz de punto final de servicio de un bean de sesión sin estado como uno de sus puntos finales.
Un bean de sesión sin estado puede modificarse para incluir una vista de cliente de servicio Web o puede
correlacionarse una interfaz de punto final de servicio de un WSDL existente para proporcionar la interfaz correcta.
Una vista de cliente de servicio Web es independiente de la ubicación y puede accederse a ella a través de llamadas
remotas.
- Archivo JAR de cliente EJB
- Un archivo JAR de cliente EJB es un archivo JAR opcional que puede contener las interfaces de cliente que necesita
un programa para utilizar las vistas de cliente de los beans de empresa contenidos en el archivo JAR de EJB. Si decide
no crear un archivo JAR de cliente EJB para un módulo EJB, todas las clases de interfaz de cliente estarán en el
archivo JAR de EJB. Por omisión, el entorno de trabajo crea los proyectos JAR de cliente EJB para cada proyecto EJB
correspondiente.
- contenedor EJB
- Un contenedor EJB es un entorno de tiempo de ejecución que gestiona uno o varios beans de empresa. El
contenedor EJB gestiona los ciclos de vida de objetos de bean de empresa, coordina transacciones distribuidas e
implementa la seguridad de objetos. Generalmente, a cada contenedor EJB se le proporciona un servidor EJB y contiene un
conjunto de beans de empresa que se ejecutan en el servidor.
- Descriptor de despliegue
- Un descriptor de despliegue es un archivo XML empaquetado con los beans de empresa en un archivo JAR de EJB o en un
archivo EAR. Contiene metadatos que describen el contenido y la estructura de los beans de empresa e
información de seguridad y transacción de tiempo de ejecución para el contenedor de EJB.
- Servidor EJB
- Un servidor EJB es un proceso o una aplicación de alto nivel que proporciona un entorno de tiempo de ejecución para
soportar la ejecución de aplicaciones de servidor que utilizan beans de empresa. Un servidor EJB
proporciona un servicio de denominación accesible para JNDI, gestiona y coordina la asignación de recursos a
aplicaciones de cliente, proporciona acceso a recursos del sistema y proporciona un servicio de transacción. Un
servidor de EJB pueden proporcionarlo por ejemplo, un servidor de base de datos o de aplicación.