3 Taller EJB

7
Laboratorio EJB (Capa servicios ) Arquitectura de Software Ing. Mario Linares Vásquez MSc. El objetivo de este laboratorio es utilizar EJB 3 como tecnología para implementación de la capa de negocio en aplicaciones Java Los conceptos planteados en clase serán interiorizados a través de la ejecución práctica sobre un ambiente de desarrollo. En este caso se implementará un modulo EJB que sera accedido por una aplicación standalone (de escritorio) y por una web. Para la implementación de la cada de datos se puede utilizar el motor MySQL o Java DB embebido en Netbeans. La capa de negocio proporciona servicios de persistencia para el siguiente modelo de datos. 1. Acceso a Datos y Servicios. En este medida se debe crear un proyecto Java con los entities y daos respectivos. Los métodos de los DAOS deben recibir como parámetro el entity manager sobre el cual se invocan las tareas de persistencia. Una vez implementados los DAOS el objetivo es crear la capa de negocio con EJBs, con un módulo EJB con nombre EJBModule. Ing. Mario Linares Vásquez MSc

Transcript of 3 Taller EJB

Page 1: 3 Taller EJB

Laboratorio EJB (Capa servicios )

Arquitectura de SoftwareIng. Mario Linares Vásquez MSc.

El objetivo de este laboratorio es utilizar EJB 3 como tecnología para implementación de la capa de negocio en aplicaciones Java Los conceptos planteados en clase serán interiorizados a través de la ejecución práctica sobre un ambiente de desarrollo. En este caso se implementará un modulo EJB que sera accedido por una aplicación standalone (de escritorio) y por una web. Para la implementación de la cada de datos se puede utilizar el motor MySQL o Java DB embebido en Netbeans.

La capa de negocio proporciona servicios de persistencia para el siguiente modelo de datos.

1. Acceso a Datos y Servicios.

En este medida se debe crear un proyecto Java con los entities y daos respectivos. Los métodos de los DAOS deben recibir como parámetro el entity manager sobre el cual se invocan las tareas de persistencia. Una vez implementados los DAOS el objetivo es crear la capa de negocio con EJBs, con un módulo EJB con nombre EJBModule.

Ing. Mario Linares Vásquez MSc

Page 2: 3 Taller EJB

Para crear un módulo EJB, en el asistente de proyectos de Netbeans, se debe seleccionar la categoría Java EE y la opción EJB Module.

Una vez creado el módulo, agregue una paquete services en el cual se ubicará el código de los EJBs y sus interfaces de negocio.

La lógica de negocio puede ser implementada mediante Application Services o con Session Facades (en el caso que los servicios se expongan para el acceso de la capa cliente). Ambos tipos de clases pueden ser implementados como POJOs o con EJBs. En el caso de ser implementados como EJBs se aprovechan las bondades proporcionadas por el contenedor de EJBS. Si el despliegue de la aplicación no se hace sobre un contenedor de EJBs, entonces la estrategia es utilizar la estrategia de implementacion con POJOS.

Para el caso particular de este laboratorio, se implementaran los Session Facade y los Application Services con EJBs. La idea es proporcionar servicios de tal forma que la capa vista pueda invocar las tareas de persistencia sobre las entidades Program y Student. En el caso de la entidad Address, se administra en cascada mediante el Programa.

Para crear EJBs en Netbeans, se puede utilizar el asistente de creación contextual, haciendo click sobre el paquete services, y seleccionando la opción Session Bean.

Ing. Mario Linares Vásquez MSc

Page 3: 3 Taller EJB

Agregue un Session EJB de tipo Stateless, y con interfaces remota y local, para la entidad Student. Como este EJB va proporcionar acceso a la capa de presentación , se debe implementar como un Session Facade. En esta medida se sugiere que el nombre del Bean sea StudentFacade.

Ing. Mario Linares Vásquez MSc

Page 4: 3 Taller EJB

Luego de creado el EJB, dentro del paquete services aparecerá la implementacion del bean y las interfaces seleccionadas.

Para agregar los métodos de negocio al bean de forma rápida se puede utilizar el asistente que se despliega con la combinación de teclas ALT + Ins. En el menú contextual aparece la opcion Add Business Method...

Agregue métodos de negocio al StudentFacade por cada tarea de persistencia. No olvide agregar como librería al modulo web, el proyecto donde se encuentra la capa de acceso a datos. Estos métodos deben invocar los DAOs respectivos y las tareas de persistencia particulares. Como los métodos de los DAOS reciben el EntityManager, este debe instanciarse en los servicios. En el caso de los EJBs se puede acceder a este mediante inyección de dependencia. Para inyectar un Entity Manager en un EJB se debe incluir las siguientes líneas de código.

@PersistenceUnit private EntityManagerFactory entityManagerFactory; private EntityManager entityManager;

Ing. Mario Linares Vásquez MSc

Page 5: 3 Taller EJB

Un ejemplo del método de saveStudent en el StudentFacade es el siguiente:

Ing. Mario Linares Vásquez MSc

Page 6: 3 Taller EJB

Dado que el EntityManager es inyectado, se debe instanciar y liberar programaticamante aprovechando el ciclo de vida de los EJB y los métodos callback. A continuación se presenta como se realizar esto en los EJBs:

Luego de implementar los Facade para las entidades Program y Student. Agregue una entidad Log con atributos date y description para almacenar un registro de cualquier operación de persistencia que se realice. Adicione tambien el DAO para el Log y un ApplicationService implementado como un Stateless EJB con interfaz local. La razón para implementarlo como AppService, es que este servicio no va ser accedido desde la capa presentación, los métodos de los session facade al servicio dentro de cada uno de sus métodos de negocio. Este AppService debe tener un método save que recibe una cadena con la descripción del log.

Ing. Mario Linares Vásquez MSc

Page 7: 3 Taller EJB

Agregue manejo transaccional en los EJBs, haciendo uso de las anotaciones @TransactionManagement y @TransactionAtribute.

2. Capa presentación

Los métodos de negocio de la interfaz remota de un EJB pueden ser invocados desde cualquier aplicación Java web o desktop. Para este laboratorio se debe implementar una aplicación web desde la cual se consuman los métodos publicados en los session facade del módulo EJB.

Para poder acceder a los EJBs desde la aplicacion web, se debe agregar el modulo EJB como librería. Luego en los controladores de la vista se debe hacer el respectivo lookup de las interfaces remotas:

InitialContext ctx = new InitialContext();StudentFacadeRemote remote = (StudentFacadeRemote) ctx.lookup("StudentFacade");

Bibliografía

- D. Panda. EJB3 In action, Manning Publications, 2007.- M. Keith. Pro EJB3: Java Persistence API, Apress, 2007.

Ing. Mario Linares Vásquez MSc