Proyecto Java EE
 

Sprint Enterprise

Introducción

El objetivo de este Sprint Enterprise es repasar los últimos contenidos aprendidos, de modo que integremos la solución que teníamos funcional en el Sprint Web (con su interfaz de usuario amigable), y desarrollar nuevos casos de uso para codificar teniendo en cuenta todas las capas de una aplicación empresarial completa.

Funcionalidades a Desarrollar

Seguridad Declarativa mediante JDBCRealm

Lo primero que haremos será integrar la seguridad declarativa. Para ello, mediante un JDBCRealm de Glassfish tenéis que integrar el login que teníamos en el proyecto web.

Recordad que no es recomendable utilizar contraseñas en texto plano. Para ello, vamos crear una nueva columna en la tabla usuario para almacenar la contraseña encriptada mediante MD5, utilizaremos el siguiente comando:

ALTER TABLE biblioteca.usuario ADD COLUMN PASSWORD2 VARCHAR(255) AFTER PASSWORD;
UPDATE usuario SET PASSWORD2=MD5(PASSWORD);

Así pues el JDBCRealm utilizará esta nueva columna para comprobar la contraseña del usuario.

Integración de la capa web con EJBs

A continuación, vamos a modificar los servlets para que en vez de pasar por la factoría accedamos a los EJB directamente desde los Servlets.

Para ello, en todos los Servlets hemos de eliminar el uso de FactoriaService y utilizar las anotaciones @EJB para referenciar a los servicios de negocio.

En este momento, la aplicación debe funcionar tal cual la teníamos en el Sprint Web.

Casos de Uso

A partir de aquí, vamos a desarrollar las siguientes operaciones mediante el uso de Timers:

  • Devolución automática de un libro que esta prestado en Sala: comprobar si ha finalizado la fecha de devolución de un libro, y si todavía se encuentra en SALA, pasarlo a DISPONIBLE o RESERVADO dependiendo de si tenía reservas pendientes. Las reglas de negocio de esta operación son muy parecidas a las de anularPrestamo que ya codificamos en el sprint web.
  • Asignación de estado de usuario a MOROSO si ha finalizado la fecha de devolución de un préstamo y todavía no ha devuelto el libro.
  • Caducacidad de multas y asignación de estado de usuario a ACTIVO si ha finalizado la fecha de finalización de multa. Dependiendo de la gestión de multas que hicisteis en el MDB de la sesión de Componentes Enterprise, es posible que un usuario tenga más de una multa activa en un instante determinado. Por ello, en este caso, habréis de comprobar esta casuística, y en dicho caso, si el usuario sigue teniendo alguna multa activa, pasar a HISTORICO la multa que ha caducado pero mantener al usuario como MULTADO.

En estos tres casos de uso, un vez realizada la operación, la aplicación debe mandar un mail para informar al usuario de lo que acaba de suceder. El envío de emails se debe realizar desde una clase POJO ubicada en el proyecto EJB, ya sea mediante el uso directo de JavaMail o con la libreria commons-email. Se recomienda crear una cuenta de Google para hacer las pruebas de envío de mail, ya que la cuenta de la UA sólo funciona como servidor SMTP desde dentro de la universidad.

A Entregar

El sprint enterprise tiene una calificación máxima de 10 puntos, repartidos de la siguiente manera:

  • Calidad del código: limpieza, bajo acoplamiento, alta cohesión (1 ptos)
  • Seguridad declarativa (1.5 pto)
  • Integración de capa web con EJBs (1.5 pto)
  • Casos de uso (4.5 ptos)
    • Devolución de libros en SALA (1.5 ptos)
    • Usuarios MOROSO (1.5 ptos)
    • Usuario ACTIVO (1.5 ptos)
  • Envío de emails (1.5 ptos)

Recordar que la fecha de entrega es el 16 de Mayo y que el proyecto se realiza por parejas. Para la entrega utilizad la etiqueta entrega-sprint-ent . Si no entregáis en plazo, usad la etiqueta entrega-sprint-entprorroga