Mediante la interfaz Java Messaging Service (JMS), puede desarrollar
consumidores de sucesos que reciban notificaciones de sucesos de forma asíncrona de
las colas o temas JMS.
Un consumidor de sucesos puede implementarse como una clase Java estándar o como
un bean controlado por mensajes (MDB).
Mediante la interfaz JMS, puede implementar el consumidor de sucesos utilizando
herramientas Java y modelos de programación estándar, y puede evitar las desventajas
de rendimiento que supone consultar directamente el almacén de datos de sucesos. En
lugar de interaccionar directamente con
Common Event Infrastructure, el consumidor de
sucesos se suscribe a destinos JMS (colas y temas) y recibe notificaciones de
sucesos en forma de mensajes JMS.
Common Event Infrastructure organiza
sucesos en grupos de sucesos, que son colecciones lógicas de sucesos definidas
en la configuración de
Common Event Infrastructure. Generalmente, un
consumidor de sucesos sólo debe recibir sucesos de grupos de sucesos específicos.
El perfil de configuración para cada grupo de sucesos asocia dicho grupo de
sucesos con uno o más destinos JMS a través de los que se distribuyen las
notificaciones relacionadas con dicho grupo de sucesos. Las relaciones entre grupos
de sucesos y destinos JMS son las siguientes:
- Un grupo de sucesos puede asociarse con varias colas.
- Un grupo de sucesos puede asociarse solamente con un tema. (Varios consumidores
de sucesos pueden describir el mismo tema, por lo que publicar el mismo grupo de
sucesos en más de un destino es redundante.)
- Un destino JMS (cola o tema) generalmente debe asociarse solamente con un
grupo de sucesos.
Para recibir mensajes de un grupo de sucesos, un consumidor JMS se suscribe al
destino apropiado. Cada vez que se crea, modifica o suprime un suceso que coincide
con el grupo de sucesos asociado, se entrega una notificación en forma de mensaje
JMS que contiene una notificación de suceso. El contenido de la notificación
depende de este tipo:
- Para un suceso nuevo o modificado, la notificación incluye los datos del
suceso completo, que puede convertirse en una instancia de CommonBaseEvent.
- En el caso de un suceso que se ha suprimido, la notificación incluye el
identificador de instancia global del suceso que se ha suprimido.
Además de interaccionar con las interfaces JMS estándar, un consumidor de sucesos
JMS interacciona con un recurso denominado Notification Helper. Este recurso
realiza la conversión entre entidades
Common Event Infrastructure (sucesos y grupos
de sucesos) y entidades JMS equivalentes (mensajes y destinos). El recurso
Notification Helper proporciona las funciones siguientes:
- Identifica el tema o las colas JMS asociados al grupo de sucesos especificado.
El consumidor de sucesos puede utilizar el destino apropiado para crear
suscripciones.
- Convierte las notificaciones de sucesos para los sucesos nuevos y modificados en
instancias de CommonBaseEvent.
- Puede proporcionar filtrado de sucesos en el consumidor. Cada recurso Notification Helper puede asociarse con un selector de sucesos que especifique
qué sucesos deben devolverse a los consumidores. Cuando un consumidor utiliza
Notification Helper para convertir una notificación de suceso en una instancia de
suceso, la instancia de suceso sólo se devuelve si coincide con el selector de
sucesos especificado.
Nota: El recurso Notification
Helper utiliza el componente Apache JXPath para procesar selectores de
sucesos XPath. Si la seguridad Java 2 está habilitada, debe modificar el archivo de
políticas para que incluya las entradas siguientes:
permission java.util.PropertyPermission "*", "read";
permission java.io.FilePermission
"${was.install.root}${/}java${/}jre${/}lib${/}jxpath.properties",
"read";