Utilizzando l'interfaccia JMS (Java Messaging Service), è possibile sviluppare gli event consumer che ricevono le notifiche di evento in modo asincrono dalle code o dagli argomenti JMS.
Un event consumer può essere implementato come una classe Java standard o come un MDB (Message-Driven Bean).
Utilizzando l'interfaccia JMS, è possibile implementare
l'event consumer mediante gli strumenti Java standard e i modelli di programmazione ed
è possibile evitare gli svantaggi in termini di prestazioni derivanti dal rivolgere
direttamente le query all'archivio dati di eventi. Invece di interagire con la Common Event Infrastructure direttamente, l'event consumer sottoscrive le destinazioni JMS
(code e argomenti) e riceve gli eventi sotto forma di messaggi JMS.
La Common Event Infrastructure organizza gli eventi in gruppi, che rappresentano raccolte logiche di eventi definite nella configurazione della Common Event Infrastructure. Un
event consumer specifico in genere riceve soltanto eventi da determinati gruppi di
eventi.
Il profilo di configurazione di ogni gruppo di eventi associa quel gruppo a una o più
destinazioni JMS attraverso le quali vengono distribuite le notifiche
correlate a quel gruppo di eventi. Le relazioni tra i gruppi di eventi e le
destinazioni JMS sono le seguenti:
- Un gruppo di eventi può essere associato a più code.
- Un gruppo di eventi può essere associato a un solo argomento. Più event
consumer possono sottoscrivere lo stesso argomento, in modo che la pubblicazione dello
stesso gruppo di eventi su più di un argomento diventi ridondante.
- Una destinazione JMS (coda o argomento) dovrebbe in genere essere associata a un
solo gruppo di eventi.
Per ricevere messaggi da un gruppo di eventi, un consumer JMS sottoscrive la
destinazione appropriata. Ogni volta che viene creato, modificato o eliminato un evento che corrisponde al gruppo di eventi associato, viene distribuita una notifica sotto forma di un messaggio JMS che contiene una notifica evento. Il contenuto della notifica dipende dal suo tipo:
- Per un evento nuovo o modificato, la notifica include i dati di evento completi, che possono essere convertiti in un'istanza CommonBaseEvent.
- Per un evento eliminato, la notifica include l'identificativo di istanza globale dell'evento che è stato eliminato.
Oltre alle interfacce JMS standard, un event consumer JMS interagisce con una funzione
denominata Helper di notifica. L'Helper di notifica esegue la conversione tra le entità Common Event Infrastructure (eventi e gruppi di eventi) e le entità JMS equivalenti (messaggi e destinazioni). L'Helper di notifica fornisce le seguenti funzioni:
- Identifica le code o l'argomento JMS associati a uno specifico gruppo di eventi. L'event consumer può quindi utilizzare la destinazione appropriata per
creare sottoscrizioni.
- Converte le notifiche di eventi per gli eventi nuovi e modificati in istanze di CommonBaseEvent.
- Può fornire il filtraggio degli eventi al consumer. Ciascun Helper di notifica può essere
associato a un selettore eventi che specifica quali eventi debbano essere restituiti ai consumer.
Quando un consumer utilizza l'helper di notifica per convertire una notifica dell'evento
in un'istanza di evento, tale istanza di evento viene restituita soltanto se corrisponde al selettore eventi specificato.
Nota: l'helper di notifica utilizza il componente Apache JXPath per elaborare i selettori eventi XPath. Se Java 2 Security è abilitata, occorre modificare il proprio file delle politiche per includere le seguenti voci:
permission java.util.PropertyPermission "*", "read";
permission java.io.FilePermission
"${was.install.root}${/}java${/}jre${/}lib${/}jxpath.properties",
"read";