Читать книгу Desarrollo de aplicaciones web con Jakarta EE - César Francisco Castillo - Страница 48

3.3 Eventos

Оглавление

Según una de las tres definiciones de la Real Academia Española, un evento es un suceso de importancia que se encuentra programado.

En muchas situaciones es deseable ejecutar una determinada acción como consecuencia de otra. En estas situaciones podemos utilizar eventos y oyentes. Los oyentes están pendientes de que ocurra un evento y, cuando sucede, se activan.

¿En qué situaciones se pueden aplicar? Por supuesto, existen un sinfín de situaciones en las que podría ser deseable ejecutar eventos, pero mencionaremos las siguientes:

* Al registrar exitosamente una inscripción a un curso, el sistema emite el mensaje correspondiente.

* Al producirse un fallo en la actualización de un registro, el sistema almacena información sobre este.

* Cuando un usuario se registra en nuestro sitio web, el sistema envía un mail de bienvenida.

* Al vender un artículo y descontar su stock.

Jakarta EE pone a disposición de los programadores el concepto de EJB event, que nos brinda la posibilidad de generar eventos dentro de los EJBs para evitar el acoplamiento entre servicios. Gráficamente podemos observarlo en la Figura 3.1.

Figura 3.1 Evento EJB.

A continuación, a modo de ejemplo, veremos una implementación en la cual simularemos la venta de un artículo. Si tras realizar dicha venta el stock del artículo se encuentra por debajo de las diez unidades, se disparará un evento que insertará un registro en una tabla ficticia llamada “faltantes”.

Comenzaremos escribiendo la clase Articulo:


Luego debemos crear el evento que contenga una variable de instancia de tipo Articulo.


Ahora debemos crear un servicio EJB con un método que controle el stock y dispare el evento. Para ello crearemos un Stateless EJB y, dentro de él, inyectaremos el evento. Este será lanzado mediante la invocación al método fire() de la interface Event.


Llegados a este punto, lo que debemos hacer es desarrollar los oyentes que estarán a la espera de que ocurra el evento. El oyente, generalmente llamado listener, será otro Stateless EJB, que tendrá en su interior un método escuchaEvento() que recibirá como parámetro un objeto de tipo Event junto a la anotación @Observes, como se puede apreciar en el siguiente fragmento de código:



Desarrollo de aplicaciones web con Jakarta EE

Подняться наверх