You are on page 1of 42

Contenedor EJB

Session Beans

Session Beans
Son componentes que ofrecen servicios. Los servicios que se ofrecen son mtodos dentro del EJB El contenedor provee la lgica de conexin y desconexin con los clientes. El programador del EJB no sabe donde esta el cliente.

Ejemplo

Stateful Session beans


Contienen variables de estado que dependen del cliente por lo cual el Contenedor de EJB no hace pooling. Los clientes mantienen la instancia viva hasta que destruyen la referencia. El mnimo EJB de tipo Session Stateful se construye con 1 clase y 2 interfaces Interfaz Home (local o remota) Interfaz de uso (local o remota) Implementacin

Session EJB
Un EJB se compone de: Una interfaz Home Local Remota Una interfaz de uso Local Remota Una clase de implementacin La implementacin de todos los mtodos y constructores esta siempre en la clase de implementacin.

Interfaz Home
Se requiere una interfaz Home que: Provee de acceso a los clientes para
Crear instancias del EJB Remover instancias de un EJB Obtener informacin acerca del EJB (v2.1) Obtener un Handle de la interfaz remota que permita

almacenamiento persistente
La interfaz home debe: Extender javax.ejb.EJBHome (EJBLocalHome) Describir al menos 1 mtodo create que retorne una instancia de la interfaz remota(local) Genere RemoteException (slo en la interfaz remota)

Interfaz Home

Interfaz de uso
Se requiere una interfaz local o remota que Indica a los clientes los mtodos disponibles La interfaz de uso debe: Extender de javax.ejb.EJBObject o javax.ejb.EJBLocalObject Describir al menos 1 mtodo de servicio En la interfaz remota todos los mtodos deben generar java.rmi.RemoteException Los mtodos de la interfaz remota pueden ser los mismos de la interfaz local.

Interfaz de uso

Clase de implementacin
Es usada por el contenedor de EJB para proveer la respuesta a los servicios La clase de implementacin debe Extender de javax.ejb.SessionBean Implementar los mtodos de servicio Nota: Sus mtodos no generan RemoteException. Implementa mtodos relacionados al ciclo de vida. Implementa los mtodos constructores.

Clase de implementacin

Clase de implementacin
Contiene mtodos relacionados al ciclo de vida del EJB

Clase de implementacin
Relacin con los mtodos de la interfaz remota

La llamada create
La llamada a create desde el cliente da a lugar a muchas acciones del contenedor que requiere preparar la instancia del EJB para su uso.

Deployment Descriptor
Define completamente al EJB incluyendo sus caractersticas transaccionales. Se incluyen las interfaces locales y remotas (si las hay).

Ciclo de vida
El contenedor administra el ciclo de vida

Transacciones
Un EJB es un componente de apoyo y puede procesar transacciones (en sistemas transaccionales).
Se puede operar programticamente El descriptor del EJB debe indicar Transaction-type: Bean JDBC : Bsicas, el programa controla las transacciones va

Connection.commit() y Connection.rollback(). JTA : Basadas en un administrador de transacciones.


El programa utiliza un objeto UserTransaction para controlar transacciones distribuidas

Transacciones
Se puede operar declarativamente El descriptor del EJB debe indicar Transaction-type: Container El programa no utiliza control explcito de transacciones. Cada operacin (mtodo de negocio) tiene un atributo transaccional.

Transacciones del Contenedor


Cada mtodo puede indicar una de las siguientes opciones.
Required Mandatory RequiresNew NotSupported Supports Never

En cada mtodo se puede saber que transaccin se usara segn la transaccin usada en el mtodo que llama.

Transacciones del Contenedor

Container Transactions

Container Transactions

Container Transactions
Los datasources son cacheables...

Referencias
Para acceder a un EJB se requiere establecer referencias. Cualquier componente puede acceder a un EJB, sin embargo los componentes que residen en contenedores J2EE utilizan deployment descriptors. Con ellos se pueden usar alias de los objetos.

EJB usando otros EJB


Desde un EJB las referencias son parte de la descripcin.

EJB con Datasources


Tambin puede haber referencias a otros recursos como conexiones JDBC

Variables de ambiente
Las variables de inicio de un EJB se colocan en el descriptor xml, y se accede a ellas a travs de JNDI Para leer las variables de ambiente se suele usar los mtodos constructores (ejbCreate).

Variables de ambiente

Resumen de descriptor

Handles
Si un cliente requiere mantener una conexin abierta con un SessionBean, es posible obtener un Handle Un Handle puede ser serializado y almacenado persistentemente para luego, recuperar el objeto referenciado originalmente. Un handle dura hasta que el objeto EJB es removido mediante el uso de alguno de los siguientes mtodos: ejb.remove(); ejbHome.remove(ejbInstance); ejbHome.remove(handle);

Session Stateles
Son EJBs de sesin que no tiene estado Tienen solo 1 mtodo create() sin parmetros En general los servidores de aplicaciones solo crean una instancia, ya que al no tener estado es posible usarlo en forma paralela (thread safe). Un EJB Session Stateless no debe dejar transacciones abiertas desde un mtodo para hacer commit en otro mtodo.

Session Stateles

Construccin de EJB
Seguir los siguientes pasos Elegir Stateless o Stateful Elegir interfaces locales, remotas o ambas Crear las interfaces Home Crear las interfaces de uso Crear la clase de implementacin Crear el deployment descriptor Empaquetar y probar.

Clientes
Los clientes eligen la interfaz a usar: local o remota a travs de una referencia.

Clientes

Clientes
En general debido a que los EJB no tienen interfaz de usuario, los Servlets suelen ser clientes. Para acceder a un EJB el cliente debe tener al menos una copia del juego de objetos que desea usar: Local: Interfaz LocalHome Interfaz Local Remota Intefaz Home Interfaz Remota

Clientes
Los clientes normalmente son mdulos WAR dentro del mismo EAR. Para poder acceder a los EJB se utiliza un classpath basado en los archivos META-INF

Clientes

Clientes

Aplicaciones EAR

Aplicaciones EAR
El orden en que se inicializan los mdulos es el mismo en que estn en el archivo application.xml.

Relaciones

You might also like