Top Banner
Contenedor EJB Session Beans
42

30Sep 01 Session Beans

Oct 25, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 30Sep 01 Session Beans

Contenedor EJB

Session Beans

Page 2: 30Sep 01 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.

Page 3: 30Sep 01 Session Beans

Ejemplo

Page 4: 30Sep 01 Session Beans

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

Page 5: 30Sep 01 Session Beans

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.

Page 6: 30Sep 01 Session Beans

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)

Page 7: 30Sep 01 Session Beans

Interfaz Home

Page 8: 30Sep 01 Session Beans

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.

Page 9: 30Sep 01 Session Beans

Interfaz de uso

Page 10: 30Sep 01 Session Beans

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.

Page 11: 30Sep 01 Session Beans

Clase de implementación

Page 12: 30Sep 01 Session Beans

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

Page 13: 30Sep 01 Session Beans

Clase de implementación● Relación con los métodos de la interfaz remota

Page 14: 30Sep 01 Session Beans

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.

Page 15: 30Sep 01 Session Beans

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

Page 16: 30Sep 01 Session Beans

Ciclo de vidaEl contenedor administra el ciclo de vida

Page 17: 30Sep 01 Session Beans

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

Page 18: 30Sep 01 Session Beans

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.

Page 19: 30Sep 01 Session Beans

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.

Page 20: 30Sep 01 Session Beans

Transacciones del Contenedor

Page 21: 30Sep 01 Session Beans

Container Transactions

Page 22: 30Sep 01 Session Beans

Container Transactions

Page 23: 30Sep 01 Session Beans

Container TransactionsLos datasources son cacheables...

Page 24: 30Sep 01 Session Beans

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.

Page 25: 30Sep 01 Session Beans

EJB usando otros EJB● Desde un EJB las referencias son parte de ladescripción.

Page 26: 30Sep 01 Session Beans

EJB con Datasources

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

Page 27: 30Sep 01 Session Beans

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).

Page 28: 30Sep 01 Session Beans

Variables de ambiente

Page 29: 30Sep 01 Session Beans

Resumen de descriptor

Page 30: 30Sep 01 Session Beans

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);

Page 31: 30Sep 01 Session Beans

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.

Page 32: 30Sep 01 Session Beans

Session Stateles

Page 33: 30Sep 01 Session Beans

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.

Page 34: 30Sep 01 Session Beans

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

Page 35: 30Sep 01 Session Beans

Clientes

Page 36: 30Sep 01 Session Beans

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

Page 37: 30Sep 01 Session Beans

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

Page 38: 30Sep 01 Session Beans

Clientes

Page 39: 30Sep 01 Session Beans

Clientes

Page 40: 30Sep 01 Session Beans

Aplicaciones EAR

Page 41: 30Sep 01 Session Beans

Aplicaciones EAR

● El orden en que se inicializan los módulos esel mismo en que están en el archivo application.xml.

Page 42: 30Sep 01 Session Beans

Relaciones