30Sep 01 Session Beans

42
Contenedor EJB Session Beans

Transcript of 30Sep 01 Session Beans

Contenedor EJB

Session Beans

Session Beans● Son componentes que ofrecen servicios.● Los servicios que se ofrecen son métodos dentro del EJB● El contenedor provee la lógica de conexión ydesconexión con los clientes.● El programador del EJB no sabe donde esta el cliente.

Ejemplo

Stateful Session beans● Contienen variables de estado que dependendel cliente por lo cual el Contenedor de EJB no hace pooling.● Los clientes mantienen la instancia “viva” hasta que destruyen la referencia.● El mínimo EJB de tipo Session Stateful se construye con 1 clase y 2 interfaces– Interfaz Home (local o remota)– Interfaz de uso (local o remota)– Implementación

Session EJB

● Un EJB se compone de:– Una interfaz Home

● Local● Remota

– Una interfaz de uso● Local● Remota

– Una clase de implementación● La implementación de todos los métodos yconstructores esta siempre en la clase de

implementación.

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 información 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 método create que retorne una instancia de la interfaz remota(local)– Genere RemoteException (sólo en la interfazremota)

Interfaz Home

Interfaz de uso

● Se requiere una interfaz local o remota que– Indica a los clientes los métodos disponibles● La interfaz de uso debe:– Extender de javax.ejb.EJBObject ojavax.ejb.EJBLocalObject– Describir al menos 1 método de servicio– En la interfaz remota todos los métodos debengenerar java.rmi.RemoteException– Los métodos de la interfaz remota pueden ser losmismos de la interfaz local.

Interfaz de uso

Clase de implementación● Es usada por el contenedor de EJB paraproveer la respuesta a los servicios● La clase de implementación debe

– Extender de javax.ejb.SessionBean– Implementar los métodos de servicio

● Nota: Sus métodos no generan RemoteException.– Implementa métodos relacionados al ciclo devida.– Implementa los métodos constructores.

Clase de implementación

Clase de implementación● Contiene métodos relacionados al ciclo devida del EJB

Clase de implementación● Relación con los métodos 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 características transaccionales.● Se incluyen las interfaces locales y remotas (si las hay).

Ciclo de vidaEl contenedor administra el ciclo de vida

Transacciones● Un EJB es un componente de apoyo y puede procesar transacciones (en sistemastransaccionales).

● Se puede operar programáticamente– El descriptor del EJB debe indicar● Transaction-type: Bean● JDBC :

– Básicas, el programa controla las transacciones vía

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 explícito de transacciones.● Cada operación (método de negocio) tiene un atributotransaccional.

Transacciones del Contenedor● Cada método puede indicar una de las siguientes opciones.

● Required● Mandatory● RequiresNew● NotSupported● Supports● Never

● En cada método se puede saber que transacción se usara según la transacción usada en el método que llama.

Transacciones del Contenedor

Container Transactions

Container Transactions

Container TransactionsLos datasources son cacheables...

Referencias

● Para acceder a un EJB se requiere establecerreferencias.● 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 ladescripción.

EJB con Datasources

● También puede haber referencias a otros recursos como conexiones JDBC

Variables de ambiente

● Las variables de inicio de un EJB se colocanen el descriptor xml, y se accede a ellas a través de JNDI● Para leer las variables de ambiente se suele usar los métodos constructores (ejbCreate).

Variables de ambiente

Resumen de descriptor

Handles● Si un cliente requiere mantener una conexiónabierta con un SessionBean, es posibleobtener un Handle– Un Handle puede ser serializado y almacenadopersistentemente para luego, recuperar el objetoreferenciado originalmente.– Un handle dura hasta que el objeto EJB esremovido mediante el uso de alguno de lossiguientes métodos:● ejb.remove();● ejbHome.remove(ejbInstance);● ejbHome.remove(handle);

Session Stateles● Son EJBs de sesión que no tiene estado– Tienen solo 1 método create() sin parámetros● En general los servidores de aplicacionessolo crean una instancia, ya que al no tenerestado es posible usarlo en forma paralela(thread safe).● Un EJB Session Stateless no debe dejartransacciones abiertas desde un método parahacer commit en otro método.

Session Stateles

Construcción 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 implementación– Crear el deployment descriptor– Empaquetar y probar.

Clientes● Los clientes eligen la interfaz a usar: local o remota a través de una referencia.

Clientes

Clientes● En general debido a que los EJB no tieneninterfaz de usuario, los Servlets suelen serclientes.● Para acceder a un EJB el cliente debe teneral menos una copia del juego de objetos quedesea usar:– Local:

● Interfaz LocalHome● Interfaz Local

– Remota● Intefaz Home● Interfaz Remota

Clientes● Los clientes normalmente son módulos WARdentro 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 módulos esel mismo en que están en el archivo application.xml.

Relaciones