Sesion05

529 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
529
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Escriba sus preguntas.
    Mencione a su asesor todas las dudas para que sean absueltas.
  • Sesion05

    1. 1. Edwin Maraví emaravi@cjavaperu.com
    2. 2. www.cjavaperu.com SESION 07 Desarrollo de EJBs De Sesión con estado
    3. 3. www.cjavaperu.com AgendaAgenda En esta lección, usted aprenderá a: Identificar las características de los beans de sesión con estado Crear y desplegar beans de sesión con estado Implementar beans de sesión con estado
    4. 4. www.cjavaperu.com 4 1. La invocación del método remove() para eliminar instancias del bean de sesión iniciara la excepción _____________. a. EJBException b. CreateException c. RemoteException d. RemoveException 2. ¿Cuál método de la interfaz EJBHome es invocado por los clientes para gestionar de manera remota a un bean de sesión sin estado? a. getEJBHome() b. getHomeHandle() c. getHandle() d. isIdentical() Preguntas de EvaluaciónPreguntas de Evaluación
    5. 5. www.cjavaperu.com 5 3. ¿Cuál es el número de argumentos pasados al método create() para crear una instancia de un bean de sesión sin estado? a. Uno b. Dos c. Tres d. Cero 3. ¿Cuál método de la interfaz PortableRemoteObject es utilizado por los clientes para recuperar la referencia de la interfaz home de un bean de sesión sin estado? a. getHomeHandle() b. getEJBMetaData() c. narrow() d. getEJBHome() Preguntas de EvaluaciónPreguntas de Evaluación
    6. 6. www.cjavaperu.com 6 5. ¿Cuál método es utilizado por el método setSessionContext() definido en la interfaz SessionContext para obtener la interfaz local de un bean de sesión? a. getEJBHome() b. getEJBLocalObject() c. getEJBObject() d. getEJBLocalHome() Preguntas de EvaluaciónPreguntas de Evaluación
    7. 7. www.cjavaperu.com 7 • En una aplicación, un bean de sesión con estado guarda el estado de un cliente. • Un cliente inicia una conversación con un bean de sesión con estado cuando éste invoca al método del bean en un objeto EJB. • Cuando la conversación termina, el estado conversacional es preservado y se almacenan los datos específicos del cliente relacionados con la conversación entre el cliente y el bean. • Cuando el cliente llama a otro método en el bean de sesión con estado, el cliente puede requerir conocer el estado conversacional de la llamada de método anterior. Un bean de sesión con estado retiene el estado conversacional para clientes individuales a través de las llamadas de método. Información General de los Beans de Sesión Con EstadoInformación General de los Beans de Sesión Con Estado
    8. 8. www.cjavaperu.com 8 Ciclo de Vida de los Beans de sesión con estado • Contenedor EJB: • Controla el ciclo de vida de un bean de sesión con estado. • Asigna una instancia del bean de sesión con estado para dar servicio a un solo cliente a la vez. Como resultado, hay las mismas instancias de bean de sesión con estado en el grupo que el número de clientes. • No puede destruir de manera aleatoria la instancia de un bean de sesión con estado ya que ésta almacena el estado del cliente. • Se asegura de que el estado del cliente almacenado en las variables de la instancia de un bean no es requerido en el procesamiento de la aplicación, antes de destruir una instancia del bean de sesión con estado,. Información General de los Beans de Sesión Con EstadoInformación General de los Beans de Sesión Con Estado
    9. 9. www.cjavaperu.com 9 Las etapas del ciclo de vida de un bean de sesión con estado son: • Listo: En esta etapa, la instancia de un bean de sesión con estado permanece en el grupo compartido y da servicio a las solicitudes del cliente. • Pasiva: En esta etapa, el contenedor EJB almacena el estado del cliente en un almacén secundario y elimina la instancia del bean de la memoria. • No Existe: En esta etapa, se elimina permanentemente a un bean de sesión con estado del grupo compartido. Información General de los Beans de Sesión Con EstadoInformación General de los Beans de Sesión Con Estado
    10. 10. www.cjavaperu.com 10 Las etapas del ciclo de vida de un bean de sesiónLas etapas del ciclo de vida de un bean de sesión Información General de los Beans de Sesión Con Estado
    11. 11. www.cjavaperu.com 11 •La Etapa Listo • Al inicio de su ciclo de vida, un bean de sesión con estado está en la etapa Listo. • La instancia del bean de sesión con estado entra a la etapa Listo en los siguientes casos: • Cuando el contenedor EJB crea una nueva instancia del bean de sesión con estado. • Cuando el contenedor EJB activa un bean de sesión con estado que está pasivo. • El contenedor EJB crea nuevas instancias de un bean de sesión con estado cuando no hay suficientes instancias del bean de sesión con estado en el grupo compartido para dar servicio a las solicitudes de los clientes. Información General de los Beans de Sesión Con EstadoInformación General de los Beans de Sesión Con Estado
    12. 12. www.cjavaperu.com 12 • Para crear una nueva instancia del bean de sesión con estado, el contenedor EJB realiza los siguientes pasos: • El contenedor EJB invoca a: 1. El método newInstance(), el cual crea una nueva instancia del bean de sesión con estado. 2. El método setEntityContext() para asociar la instancia del bean de sesión con estado con el contexto del bean. 3. El método ejbCreate() de la clase bean de sesión con estado. Usted puede pasar argumentos al método ejbCreate() para inicializar una nueva instancia del bean de sesión con estado. Un bean de sesión con estado puede tener más de un método ejbCreate(), donde cada método tiene un número y tipo de argumentos diferentes. Información General de los Beans de Sesión Con EstadoInformación General de los Beans de Sesión Con Estado
    13. 13. www.cjavaperu.com 13 •Una instancia del bean de sesión con estado también puede pasar a la etapa Listo cuando el contenedor EJB activa a un bean de sesión con estado en estado pasivo invocando al método ejbActivate(). •El método ejbActivate() transfiere el estado del cliente de un bean de sesión con estado en estado pasivo a las variables de la instancia del bean de sesión con estado. •El contenedor EJB llama al método ejbActivate() para permitirle al bean adquirir los recursos liberados por éste durante su estado pasivo. Información General de los Beans de Sesión Con EstadoInformación General de los Beans de Sesión Con Estado
    14. 14. www.cjavaperu.com 14 La Etapa Pasiva • Un bean de sesión con estado entra a la etapa Pasiva en su ciclo de vida cuando el contenedor EJB lo libera de dar servicio a un cliente inactivo y devuelve el bean de sesión con estado al grupo compartido para dar servicio a las solicitudes de otro cliente. • Antes de volverlo pasivo, el contenedor EJB guarda el estado del cliente asociado con la instancia del bean de sesión con estado en un mecanismo secundario de almacenamiento, como un disco duro en el servidor. • El contenedor EJB llama al método ejbPassivate() antes de volver pasivo a un bean de sesión. Esto permite al bean de sesión liberar sus recursos. Información General de los Beans de Sesión Con EstadoInformación General de los Beans de Sesión Con Estado
    15. 15. www.cjavaperu.com 15 Etapa No Existe •Al término de su ciclo de vida, la instancia del bean de sesión con estado entra en la etapa No Existe. •Una instancia del bean de sesión con estado entra en esta etapa en los siguientes casos: • Cuando el contenedor EJB invoca al método ejbRemove(). • Cuando la desconexión por tiempo del ciclo de vida de la instancia del bean especificada por el desarrollador del bean expira. Información General de los Beans de Sesión Con EstadoInformación General de los Beans de Sesión Con Estado
    16. 16. www.cjavaperu.com 16 •El contenedor EJB destruye a las instancias del bean de sesión con estado cuando el número de instancias es mayor al número de solicitudes de clientes activos. •El contenedor EJB no invoca al método ejbRemove() en los siguientes casos: • Cuando ocurre una falla en el contenedor EJB. • Cuando la ejecución de un método del bean de sesión con estado inicia una excepción del sistema. Información General de los Beans de Sesión Con EstadoInformación General de los Beans de Sesión Con Estado
    17. 17. www.cjavaperu.com 17 Activación y Pasivación de los Beans de Sesión con Estado •El contenedor EJB pasiva y activa las instancias del bean de sesión con estado en el grupo compartido para reducir el gasto de almacenamiento de un gran número de instancias del bean. •El contenedor EJB almacena el estado del bean de una instancia inactiva del bean en un mecanismo secundario de almacenamiento. Este proceso es denominado pasivación . •Cuando el cliente de un bean pasivo llama a otro método del bean, se restaura el estado del bean. Este proceso es denominado activación. Información General de los Beans de Sesión Con EstadoInformación General de los Beans de Sesión Con Estado
    18. 18. www.cjavaperu.com 18 La pasivación del bean de sesión con estadoLa pasivación del bean de sesión con estado Información General de los Beans de Sesión Con Estado
    19. 19. www.cjavaperu.com 19 Los beans de sesión con estado preservan las referencias de las siguientes interfaces, además de la información específica del cliente durante la pasivación del bean: • javax.ejb.EJBHome • javax.ejb.EJBObject • javax.jta.UserTransaction • javax.naming.Context • javax.ejb.EJBLocalHome • javax.ejb.EJBLocalObject Información General de los Beans de Sesión Con EstadoInformación General de los Beans de Sesión Con Estado
    20. 20. www.cjavaperu.com 20 •Los distintos algoritmos utilizados para implementar la pasivación son: • El Menos Utilizado Recientemente (LRU): Selecciona la instancia del bean de sesión con estado, la cual ha estado inactiva por más tiempo. Esto se conoce como pasivación impaciente. • No Utilizado Recientemente (NRU): Selecciona la instancia del bean de sesión con estado, la cual ha estado recientemente inactiva. • Primero Dentro Primero Fuera (FIFO): Selecciona la instancia del bean de sesión con estado, la cual entró primero al grupo y está inactiva. Este también se conoce como pasivación floja. •La mayoría de los servidores EJB utilizan el algoritmo justo a tiempo, de acuerdo con este algoritmo, un bean pasivo es activado cuando un cliente decide continuar la interacción con la instancia del bean. Información General de los Beans de Sesión Con EstadoInformación General de los Beans de Sesión Con Estado
    21. 21. www.cjavaperu.com 21 Activación de un bean de sesión con estado Información General de los Beans de Sesión Con Estado
    22. 22. www.cjavaperu.com 22 • Usted necesita desarrollar las interfaces del bean y la clase bean para crear un bean de sesión con estado. • Después de crear los archivos, usted necesita compilarlos para generar los archivos de clase. • Empaquete los archivos compilados en un solo archivo Java Archive (JAR). Este archivo JAR se empaqueta después en un archivo EAR de la aplicación J2EE y se despliega en el Servidor de Aplicaciones J2EE. • Después de desplegar el bean de sesión con estado, usted puede acceder a él utilizando clientes Web o de Aplicación. Creando Beans de Sesión Con EstadoCreando Beans de Sesión Con Estado
    23. 23. www.cjavaperu.com 23 Utilizando Archivos Java para Crear un Bean de Sesión Con Estado •Usted necesita definir tres archivos de clase Java para crear un bean de sesión con estado. • Interfaz home del bean de sesión con estado: Define los métodos para crear y eliminar las instancias del bean de sesión con estado. • Interfaz remota del bean de sesión con estado: Define los métodos empresariales que pueden llamar los clientes. Estos métodos se implementan el la clase del bean de sesión con estado. • Clase del bean de sesión con estado: Implementa los métodos del ciclo de vida del bean de sesión con estado y los métodos empresariales declarados en la interfaz remota del bean de sesión con estado. Creando Beans de Sesión Con EstadoCreando Beans de Sesión Con Estado
    24. 24. www.cjavaperu.com 24 •Creando la Interfaz Home del Bean de Sesión Con Estado • Los clientes utilizan una implementación de la interfaz home del bean de sesión con estado para crear una instancia del bean de sesión con estado. • La interfaz home del bean de sesión con estado extiende a la interfaz javax.ejb.EJBHome. • Los clientes utilizan los métodos definidos en la interfaz javax.ejb.EJBHome para administrar una instancia de un bean de sesión con estado. • La interfaz home del bean de sesión con estado define al método create() para crear nuevas instancias del bean de sesión con estado. Creando Beans de Sesión Con EstadoCreando Beans de Sesión Con Estado
    25. 25. www.cjavaperu.com 25 • Puede haber varios métodos create() en la interfaz home del bean de sesión con estado, pero la firma de cada método create() debe ser diferente. • El tipo de devolución del método create() es una referencia de la implementación de la interfaz remota del bean de sesión con estado. • En la interfaz home del bean de sesión con estado, la cláusula throws del método create() incluye a las excepciones, javax.ejb.CreateException y javax.ejb.RemoteException. Creando Beans de Sesión Con EstadoCreando Beans de Sesión Con Estado
    26. 26. www.cjavaperu.com 26 Creando la Interfaz Remota del Bean de Sesión Con Estado • Los clientes remotos acceden a los métodos empresariales del bean de sesión con estado utilizando los métodos definidos en la interfaz remota del bean de sesión con estado. • La interfaz remota del bean de sesión con estado extiende a la interfaz javax.ejb.EJBObject. • La interfaz remota del bean de sesión con estado define los métodos empresariales implementados en la clase del bean de sesión con estado. • La firma de los métodos empresariales debe ser la misma que la de los métodos empresariales implementados en la clase del bean de sesión con estado. • Todos los métodos empresariales deben iniciar la excepción javax.ejb.RemoteException. Creando Beans de Sesión Con EstadoCreando Beans de Sesión Con Estado
    27. 27. www.cjavaperu.com 27 Creando la Clase del Bean de Sesión Con Estado • La clase del bean de sesión con estado implementa el ciclo de vida y los métodos empresariales de la aplicación del bean de sesión con estado. • La clase del bean de sesión con estado implementa la interfaz javax.ejb.SessionBean, la cual define los métodos invocados por el contenedor EJB para gestionar el ciclo de vida de una instancia del bean de sesión con estado. • La clase de un bean de sesión con estado declara las variables de la instancia para guardar el estado del cliente. La clase del bean de sesión con estado se declara como pública. Creando Beans de Sesión Con EstadoCreando Beans de Sesión Con Estado
    28. 28. www.cjavaperu.com 28 Compilando y Desplegando un Bean de Sesión Con Estado • Después de crear los archivos Java para un bean de sesión con estado, compile todos los archivos Java utilizando el compilador javac. • El comando que se utiliza para compilar los archivos Java es javac <file_name>. • Los archivos de clase Java compilados desde la aplicación del bean de sesión con estado se despliegan en el Servidor de Aplicaciones J2EE1.4 utilizando la herramienta deploytool. • El Asistente para el nuevo Enterprise Bean de la herramienta deploytool despliega a un bean de sesión con estado . • La herramienta deploytool empaqueta los archivos de clase Java compilados en un archivo JAR antes de desplegar el bean . • La herramienta deploytool genera automáticamente el descriptor de despliegue del bean de sesión con estado. Creando Beans de Sesión Con EstadoCreando Beans de Sesión Con Estado
    29. 29. www.cjavaperu.com 29 Accediendo a un Bean de Sesión Con Estado • Un cliente accede a los métodos empresariales de un bean de sesión con estado utilizando las referencias de las interfaces home y remota del bean. • Ambos, el cliente Web y el cliente de Aplicación, pueden acceder a un bean de sesión con estado. Un cliente realiza los siguientes pasos para acceder a un bean de sesión con estado: 1. Ubica al bean de sesión con estado desplegado en el Servidor de Aplicaciones J2EE 1.4. 2. Recupera las referencias de las interfaces home y remota del bean de sesión con estado. Creando Beans de Sesión Con EstadoCreando Beans de Sesión Con Estado
    30. 30. www.cjavaperu.com 30 Ubicando a un Bean de Sesión Con Estado • Un cliente ubica a un bean de sesión con estado en el Servidor de Aplicaciones J2EE 1.4 utilizando la Interfaz del Directorio de Nombres de Java (JNDI). • Para ubicar a un bean de sesión con estado, un cliente debe: • crear un contexto inicial de nombre utilizando la interfaz InitialContext de JNDI. • ubicar el bean de sesión con estado desplegado después de crear un contexto inicial utilizando el método lookup(). El método lookup() devuelve la referencia de la interfaz home del bean de sesión con estado. Creando Beans de Sesión Con EstadoCreando Beans de Sesión Con Estado
    31. 31. www.cjavaperu.com 31 Recuperando las Referencias de las Interfaces del Bean de Sesión Con Estado •Un cliente: • Debe recuperar las referencias de las interfaces home y remota de un bean de sesión con estado después de ubicar al bean de sesión con estado. • Puede utilizar la referencia de la interfaz remota del bean de sesión con estado para invocar a los métodos empresariales de un bean. • utiliza el método narrow() de la interfaz PortableRemoteObject para recuperar la referencia de la interfaz home de un bean de sesión con estado. Creando Beans de Sesión Con EstadoCreando Beans de Sesión Con Estado
    32. 32. www.cjavaperu.com 32 • Un cliente local debe utilizar el método lookup() de la interfaz InitialContext para recuperar una referencia de la interfaz home local de un bean de sesión con estado. • Un cliente recupera una referencia de la interfaz remota o local del bean de sesión con estado llamando al método create() en la interfaz home del bean de sesión con estado. Creando Beans de Sesión Con EstadoCreando Beans de Sesión Con Estado
    33. 33. www.cjavaperu.com 33 Las Responsabilidades del Proveedor del Bean de Sesión y el Proveedor del Contenedor EJB son: • Las Responsabilidades del Proveedor del Bean de Sesión son: • Crear la interfaz home remota del bean de sesión con estado. • Crear la interfaz local remota del bean de sesión con estado. • Crear la interfaz remota del bean de sesión con estado. • Crear la clase del bean de sesión con estado. • Cerrar todas las conexiones de la base de datos en el método ejbPassivate() del bean de sesión con estado y asignar valores nulos a las variables de instancia de conexión. Creando Beans de Sesión Con EstadoCreando Beans de Sesión Con Estado
    34. 34. www.cjavaperu.com 34 Las responsabilidades del proveedor del contenedor EJB son: • Proveer la herramienta de despliegue para desplegar beans de sesión. • Gestionar el ciclo de vida de una instancia del bean de sesión. • Garantizar que una instancia del bean de sesión dé servicio a la solicitud de un sólo cliente a la vez. El contenedor EJB inicia la javax.ejb.RemoteException o la javax.ejb.EJBException cuando un cliente intenta acceder a la instancia del bean de sesión cuando esta está dando servicio a la solicitud de otro cliente. • Manejar las excepciones del tiempo de ejecución iniciadas por las instancias de un bean de sesión Creando Beans de Sesión Con EstadoCreando Beans de Sesión Con Estado
    35. 35. www.cjavaperu.com 35 • Implementar el método SessionContext.getEJBObject() para recuperar una referencia de la interfaz remota del bean de sesión. • Serializar el estado del cliente de una instancia del bean de sesión con estado después de invocar al método ejbPassivate(). • Eliminar la instancia de un bean de sesión con estado si la instancia del bean no se adhiere a los requerimientos de serialización. • Guardar y restaurar el estado del cliente durante la pasivación y activación de la instancia del bean de sesión con estado. Creando Beans de Sesión Con EstadoCreando Beans de Sesión Con Estado
    36. 36. www.cjavaperu.com 36 En esta lección, usted aprendió: • Un bean de sesión con estado preserva el estado del cliente a través de la invocación de métodos y la transacción. • El ciclo de vida de un bean de sesión con estado consiste de tres etapas, Listo, Pasiva y No Existe. • El contenedor EJB invoca al método ejbCreate() para inicializar una nueva instancia del bean de sesión con estado. • El contenedor EJB pasiva y activa las instancias de un bean de sesión con estado para reducir el gasto de mantener un gran número de instancias del bean en el grupo compartido. • El contenedor EJB utiliza los algoritmos LRU, NRU y FIFO para seleccionar la instancia del bean de sesión con estado que será pasivada. • El algoritmo justo a tiempo se utiliza para activar un bean de sesión con estado pasivo. ResumenResumen
    37. 37. www.cjavaperu.com 37 • Para crear un bean de sesión con estado para clientes remotos, usted necesita crear los siguientes archivos Java: • Interfaz home del bean de sesión con estado • Interfaz remota del bean de sesión con estado • Clase del bean de sesión con estado • La interfaz home de un bean de sesión con estado extiende a la interfaz javax.ejb.EJBHome. • El método create() de la interfaz home de un bean de sesión con estado se utiliza para obtener una referencia al objeto que implementa la interfaz remota del bean. • La interfaz remota de un bean de sesión con estado extiende a la interfaz javax.ejb.EJBObject. ResumenResumen
    38. 38. www.cjavaperu.com 38 • La clase bean de un bean de sesión con estado implementa la interfaz javax.ejb.SessionBean. • Un cliente utiliza a JNDI para ubicar un bean de sesión con estado desplegado. ResumenResumen
    39. 39. www.cjavaperu.com ¿Preguntas ?¿Preguntas ?
    40. 40. www.cjavaperu.com 40 1. a. EJBException 2. b. getHomeHandle() 3. c. Cero 4. c. narrow() 5. b. getEJBLocalObject() Soluciones a las Preguntas de EvaluaciónSoluciones a las Preguntas de Evaluación
    41. 41. www.cjavaperu.com Muchas Gracias

    ×