30sep 01 session beans
Post on 25-Oct-2015
30 Views
Preview:
TRANSCRIPT
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.
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 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.
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.
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).
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.
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.
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).
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.
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● 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
Aplicaciones EAR
● El orden en que se inicializan los módulos esel mismo en que están en el archivo application.xml.
top related