Laboratorio 3 – Beans de Sesión

Objetivos

El objetivo principal de este laboratorio consiste en generar las habilidades necesarias para implementar el nivel de lógica de negocio utilizando la especificación EJB en su versión 3.2. Esto incluye:

  • Definir los componentes EJB 3.2 requeridos.
  • Utilizar los mock objects para facilitar las pruebas entre los EJBs y el nivel de persistencia.

Herramientas

Introducción al Laboratorio: Tutorial

En primer lugar, el objetivo es familiarizarse con el ambiente de desarrollo y las anotaciones requeridas para implementar el nivel de negocio de una aplicación JEE. Luego, mediante la implementación de la lógica de negocio para todos los procesos de Muebles de los Alpes, se pondrán en práctica los conocimientos expuestos en clase.

  1. En la siguiente direccíon se encuentra un demo que ilustra de forma rápida y general las principales actividades realizadas para llevar a cabo la implementación del módulo EJB en una aplicación basada en la plataforma JEE. Note que este es sólo un ejemplo en el cual se omiten varios de los detalles de implementación.
  2. Una vez visto el demo, el siguiente paso es descargar el CÓDIGO completo del programa desarrollado en el numeral 1, el cual será utilizado con dos propósitos: (1) Servirá como introducción para reafirmar los conceptos de EJBs de sesión vistos en clase; (2) Servirá como ejemplo para la elaboración del laboratorio 3.
  3. Inspeccione el código descargado y responda las preguntas que aparecen a continuación. NOTA: Debe responder las siguientes preguntas utilizando este archivo, el cual debe ser subido a Sicuaplus como uno de los entregables del laboratorio.
    1. Ubique la plantilla vendedores.xhtml, revise las invocaciones que se realizan al managed bean VendedorBean, ubique la acción para agregar un vendedor ¿Cómo se realiza esta invocación?
    2. En la acción de borrar un vendedor en la plantilla vendedores.xhtml, ¿Cómo se pasa el parámetro para identificar el vendedor que debe ser eliminado?
    3. Revise las interfaces IServicioVendedoresMockLocal e IServicioVendedoresMockRemote ¿Qué tipo de interfaces son?
    4. ¿Si usted cambia la anotación @Stateful a @Stateless del session bean ServicioVendedoresMock qué consecuencias habrían en la aplicación? ¿Qué consecuencias genera la anotación @Singleton?
    5. Revise las pruebas JUnit implementadas. En el proyecto Web, en el test del servicio de seguridad (LoginBeanTest), la inyección de la dependencia se hace por medio de la instanciación del mock object que la implementa. Por otro lado, en el proyecto EJB, la inyección de la dependencia en el test de VendedorServices (ServicioVendedoresMockTest) se hace por medio de JNDI. ¿Cuál es la diferencia? Ejecute ambas pruebas dos veces, una con la aplicación desplegada en el servidor y otra sin dicho despliegue. ¿Qué puede concluir de dichas ejecuciones? Sea claro y concluyente.

Desarrollo del Laboratorio

Una vez entendido el funcionamiento y los detalles de los beans de sesión, debe implementar los siguientes ítems:

  1. Anote de manera adecuada las clases bean e interfaces definidas en el paquete com.losalpes.servicios del proyecto EJB. No olvide anotar sus beans con @Stateless, @Stateful o @Singleton según crea conveniente. Tampoco olvide anotar los métodos adecuados con la anotación @Remote.
  2. En el proyecto EJB, cree un nueva clase bean llamada ServicioCatalogoMock que implemente las interfaces IServicioCatalogoMockLocal y IServicioCatalogoMockRemote.
  3. Cambie la forma de instanciar los session beans en los managed beans de la capa web. Hágalo por medio de inyecciones de dependencias utilizando la anotación @EJB.
  4. Los administradores del sistema desean ver un reporte de ventas del último mes con la intención de llevar un seguimiento de las mismas. Ud. debe implementar un session bean (interfaz(es) y clase de implementación) que genere dicho reporte y que además pueda ser desplegado vía web. El reporte puede verse como una tabla que relaciona el número de ventas del último mes con los días del mes. NOTA: Si realiza una versión gráfica del reporte se dará una bonificación de 1.0 punto sobre la nota final del taller. Para esto debe hace uso del componente para gráficos de Primefaces cuyo funcionamiento pueden estudiar en el link de demos de PrimeFaces.
  5. Defina e implemente una prueba de unidad (nombre a esta clase ServicioCatalogoMockTest) para el bean ServicioCatalogoMock implementado en el numeral 2. No olvide que el servidor debe estar corriendo la aplicación para poder ejecutar la prueba.

Entregables

La entrega del laboratorio se debe hacer por Sicuaplus y consiste de dos artefactos:

  • Archivo .docx diligenciado con las respuestas de las preguntas del Tutorial
  • Un archivo .zip (login1.zip) con la siguiente estructura de directorios interna:
    1. laboratorio2\Lab2-MueblesDeLosAlpes-ejb\ (completo)
    2. laboratorio2\Lab2-MueblesDeLosAlpes-war\ (completo)

Evaluación

La evaluación de este taller se hará de acuerdo con la siguiente plantilla de calificación