Enterprise beans

Un enterprise bean es un componente Java™ que se puede combinar con otros recursos para crear aplicaciones Java. Existen tres tipo enterprise beans: beans de entidad, beans de sesión y beans controlados por mensaje.

Todos los beans residen en contenedores de EJB (Enterprise JavaBeans), que proporcionan una interfaz entre los beans y el servidor de aplicaciones en el que residen.

EJB 2.1 y versiones anteriores de la especificación definen los beans de entidad como una forma de almacenar datos permanentes, por lo que requieren conexiones con un formato de almacenamiento persistente. Este almacenamiento debe ser una base de datos, una aplicación heredada existente, un archivo u otro tipo de almacenamiento persistente.

La especificación EJB 3.0 deja en desuso los beans de entidad de estilo EJB 1.1. La especificación JPA (Java Persistence API) pretende sustituir a los enterprise beans en desuso. Mientras que la sustitución de JPA se denomina una clase de entidad, no se debe confundir con los enterprise beans de entidad. Una entidad JPA no es un enterprise bean ni es necesario que se ejecute en un contenedor EJB.

Los beans de sesión contienen normalmente la lógica empresarial de nivel alto y de nivel medio de una aplicación. Cada método de un bean de sesión realiza una determinada operación de nivel alto. Por ejemplo, somete un pedido o transfiere dinero entre cuentas. Los beans de sesión invocan a menudo métodos en beans de entidad en el curso de la lógica empresarial.

Los beans de sesión pueden ser con estado, sin estado o singleton. Una instancia de bean con estado está especialmente indicada para un solo cliente durante su ciclo de vida, en el que el cliente realiza una serie de llamadas de método relacionadas entre ellas en el tiempo para ese cliente. Un ejemplo es un carro de la compra donde el cliente añade elementos al carro durante una sesión de compra en línea. Por el contrario, una instancia de bean sin estado la utilizan normalmente muchos clientes durante su ciclo de vida, por lo que los beans sin estado están especialmente indicados para operaciones de lógica empresarial que se pueden completar durante la invocación de un solo método. Los beans con estado sólo se deben utilizar cuando sea absolutamente necesario. El uso de beans sin estado mejora la posibilidad de depurar, mantener y escalar la aplicación.

La especificación EJB 3.1 presenta beans de sesión monoinstancia. El contenedor EJB inicializa sólo una instancia de un bean de sesión monoinstancia y esa instancia se comparte entre todos los clientes. Como una única instancia se comparte entre todos los clientes, los beans de sesión singleton tienen un ciclo de vida y una semántica de concurrencia especiales. Los beans de singleton pueden tener vistas de cliente empresarial local, empresarial remoto o de servicio web; no pueden tener vistas de cliente local o remoto EJB 2.1.

Las especificaciones EJB 3.x dan soporte a beans de sesión con estado y sin estado. Siguen un patrón simple, como el siguiente:
  • Definir la interfaz de empresa.
  • Definir la clase que la implementa.
  • Añadir metadatos con anotaciones o con descriptores de despliegue XML.
El resultado de un bean de sesión con estado simple EJB 3.x es el siguiente:
package ejb3demo;

@Stateful
public class Cart3Bean implements ShoppingCart {
    private ArrayList contents = new ArrayList();
    
public void addToCart (Object o) {
		contents.add(o);
    }

public Collection getContents() {
    return contents;

    }
}
Los componentes EJB pueden utilizar anotaciones como por ejemplo @EJB y otras referencias @Resource inyectables si el módulo es un módulo EJB 3.x.

Los clientes de aplicaciones web y los clientes de aplicaciones pueden utilizar las referencias EJB definidas por el descriptor de despliegue. Si la referencia es para un bean de sesión EJB 3.x sin una interfaz de inicio, la referencia se debe definir con un valor nulo <home> o <local-home> en el descriptor de despliegue.

Los clientes de aplicaciones web y los clientes de aplicaciones pueden utilizar también inyecciones @EJB para referencias a beans de sesión EJB en el mismo archivo EAR (enterprise archive), pero el enlace debe utilizar el soporte de AutoLink dentro del contenedor o la anotación debe utilizar el nombre de la referencia definida por el descriptor de despliegue y enlazarlo cuando se instale la aplicación. Si desea más información sobre AutoLink, consulte el tema, "Soporte de enlaces de aplicación de EJB 3.x".

Los beans controlados por mensajes permiten el servicio de mensajes asíncronos.
  • El contenedor de EJB y JMS (Java Message Service) funcionan conjuntamente para procesar mensajes. Cuando llega un mensaje desde otro componente de aplicación mediante JMS, el contenedor de EJB lo dirige mediante una llamada onMessage a una instancia de bean dirigida por mensajes que, a continuación, procesa el mensaje. En otros aspectos, los beans controlados por mensajes son similares a los beans de sesión sin estado.
  • El contenedor de EJB y un adaptador de recursos JCA (Java Connector Architecture) trabajan conjuntamente para procesar mensajes de un sistema de información de empresa (EIS). Cuando llega un mensaje de un EIS, el adaptador de recursos recibe el mensaje y lo envía a un bean controlado por mensajes, donde se procesa. El contenedor de EJB proporciona servicios al bean controlado por mensajes como, por ejemplo, el soporte de transacciones, de la misma forma que se proporciona servicio a otros enterprise beans.

Los beans que requieren acceso a datos utilizan orígenes de datos, que son recursos administrativos que definen agrupaciones de conexiones con mecanismos de almacenamiento persistente.


Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cejb_main
File name: cejb_main.html