You are on page 1of 21

Session Beans

Piero Rivera
Alejandro Merello

27 de Octubre 2010
Introducción

• Un bean de sesión representa a un cliente dentro de


un servidor J2EE. Para acceder una aplicación
desplegada en el servidor, el cliente invoca métodos
del bean de sesión.
• Es el bean de sesión quien ejecuta el trabajo para su
cliente protegiéndolo de la complejidad de la lógica
del negocio.
• Un bean de sesión no es compartido ni persistente.
• Es hospedado en un contenedor EJB.
Manejo de estados

 Stateful: El estado de un objeto consiste en el valor de


sus variables de instancia. En un bean de sesión con
estado, las variables de instancia representan el estado
de una única sesión de cliente-bean. Permanece hasta el
fin de la sesión.

 Stateless: Una sesión stateless no mantiene un estado


conversacional para un cliente en particular. Cuando un
cliente invoca uno de sus métodos, las variables de
instancia del bean pueden contener estados, pero sólo
durante la invocación. Puede servir a muchos clientes.
¿Cuándo usarlos?

 En general conviene considerar los beans de sesión cuando:


 En cualquier momento, un sólo cliente accede al bean.
 El estado del bean no es persistente.
 Stateful cuando ocurra alguna de estas condiciones:
 El estado del bean representa la interacción entre éste y un cliente.
 El bean requiere mantener información del cliente entre invocaciones
de métodos.
 El bean es mediador entre el cliente y otros componentes de la
aplicación.
 Stateless cuando ocurra alguna de estas condiciones:
 El bean no mantiene información para un cliente específico.
 En una invocación a un método, el bean ejecuta tareas genéricas para
todos los clientes.
 El bean extrae de una base de datos un conjunto de información de
sólo-lectura.
Ciclo de vida
 STATEFUL
 Creación: Cuando el cliente ejecuta el método create().
 Uso: Cuando el cliente llama un método de negocio.
 Pasivación: El bean se manda a memoria secundaria.
 Activación: El bean es despertado para servir algún méto-
do al cliente.
 Remoción: Cuando el cliente termina su sessión con el bean.
Ciclo de vida
 STATELESS
 Creación: Cuando el contenedor quiere un bean.
 Uso: Cuando el cliente llama un método de negocio.
 Remoción: Cuando el contenedor decide que hay muchos
beans en el pool.
STATEFUL - Creación

 1) Cliente llama create() en el stub local.


 2) Objeto home recibe el llamado.
 3) Contenedor crea el objeto EJB para el bean.
 4) Contenedor crea el bean.
 5)Home retorna el stub objeto EJB (Interfaz) al cliente.
STATEFUL - Uso

 6) Cliente llama un método de negocio en la interfaz de


componente del stub.
 7) Objeto EJB recibe el llamado getAdvice().
 8) Contenedor llama a getAdvice en el bean.
Cliente

 Un cliente sólo puede acceder un Session


Bean a través de los métodos definidos en
la Interfaz.
 Tipos de acceso: remoto, local y servicio
web.
Cliente

 REMOTO:
– Puede correr desde una máquina distinta al EJB.
– Puede ser componente web, aplicación cliente u otro EB.
– Para él la ubicación del EB es transparente.
 Para definirlo debe usarse la anotación @Remote en la
declaración de la interfaz:
@Remote
public interface NombreInterfaz { … }
Cliente

 LOCAL:
– Debe correr en la misma JVM que el EB que accesa.
– Puede ser componente web u otro EB.
– Para él la ubicación del EB no es transparente.
 Para definirlo debe usarse la anotación @Local en la
declaración de la interfaz (o nada):

@Local
public interface NombreInterfaz { … }
Cliente

 SERVICIO WEB:
 Cualquier cliente de servicios web puede
invocar métodos de un Stateless Session Bean
mientras use los protocolos correctos (SOAP,
HTTP, WSDL).
 Por defecto, todos los métodos públicos son
accesibles por clientes de servicios web, pero
la anotación @WebMethod permite
personalizar su comportamiento.
Session Beans

Creando un Stateless Session Bean en


NetBeans 6.9.1 con GlassFish 3
NetBeans + GlassFish
NetBeans + GlassFish
NetBeans + GlassFish
NetBeans + GlassFish
NetBeans + GlassFish
NetBeans + GlassFish
NetBeans + GlassFish
Referencias

• The J2EE™ Tutorial


• O'Reilly – Head First EJB
• NetBeans Wiki
• Java EE 5 Tutorial Update 6

You might also like