Università degli studi di Bologna
Corso di Laurea Specialistica in Ingegneria Informatica
Reti di Calcolatori LS
Java Distributed Event
Service
Bringing events to J2EE platform
Un progetto di:
Maurizio Cimadamore [email protected]
Relazione a cura di Maurizio Cimadamore
Outline

La piattaforma di sviluppo J2EE

Java Distributed Event Service
 Architettura
di riferimento
 Funzionalità
avanzate
 Benchmark

Servizio JDEFilter

Conclusioni e sviluppi futuri
Java 2 Enterprise Edition
La piattaforma di sviluppo J2EE
rappresenta lo standard per lo sviluppo di
componenti server Java-based;
 Integra molteplici tecnologie:

 Enterprise
JavaBeans (EJB)
 Java Message Service (JMS)
…

Manca tuttavia un supporto adeguato per
la programmazione ad eventi in ambito
distribuito!
Java Message Service
JMS permette ai componenti J2EE di
interagire mediante scambio di messaggi
 Presenta i vantaggi tipici di un MOM…

 Disaccoppiamento
(in tempo e spazio)
 Persistenza dei messaggi
 Supporto per la comunicazione many-to-many

… e alcuni limiti
espressività
 Quale modello di gestione delle risorse JMS?
 QoS non sempre adeguato
 Scarsa
Java Distributed Event Service
Java Distributed Event Service (JDE)
fornisce a componenti di un’applicazione
J2EE un supporto per la programmazione
ad eventi
 Due ruoli

 Produttore
di eventi JDE
 Gestore di eventi JDE

Obiettivi:
 Scalabilità
 Integrazione
 QoS
all’interno dell’architettura J2EE
JDE – architettura di riferimento
Client
Client
JDEChannel
JDE Server
J2EE Application Server
Client
JDEChannel
JDE Channel
L’ente JDEChannel disaccoppia i client
JDE dalle risorse J2EE allocate sul server
e necessarie alla comunicazione
distribuita;
 Grazie ad esso un client JDE può:

 Essere
abilitato alla ricezione di notifiche
remote in corrispondenza del verificarsi di
determinati eventi nel sistema (mediante
opportune operazioni di registrazione)
 Effettuare la generazione di una notifica
remota
JDE – architettura di riferimento
Client
Client
JDEChannel
JDE Server
J2EE Application Server
Client
JDEChannel
JDE Server – propagazione notifiche
JDEChannel
5: report
remote event
JDEChannel
1: generate
remote event
Un JDEChannel effettua l’invio
TuttiJDE
i JDEChannel
di una
notifica remota
Application
Una
registrazione
2: produce è
Server Layer
all’evento
composta dallainteressati
tripletta:
Il tipo di notifica viene
ricevuto vengono
EventNotifier
EventGenerator notificati
utilizzato per
scoprire,
EventNotifier• Nome evento;
EventGenerator
EventQueue
via
callback-object
EventNotifier
EventGenerator
tramite un’operazione
di
• JDEChannel ID;
lookup, quali sono i
• Callback
Object,
tramiteche devono
JDEChannel
4: read/write
3: consume
può dal
essere notificati
I messaggiregistration
vengono il quale il JDEChannel
essere notificato.
serverEventGenerator
JDE
L’ente
consumati dall’ente
Registration
Registration
incapsula tale
notifica in un
EventNotifier
DBMS
Registration
messaggio JMS
JDE – Soft state

E’ necessario controllare periodicamente
che le registrazioni JDE presenti sul server
siano valide;
 Una
registrazione è valida se il JDEChannel
cui essa si riferisce è attivo;

JDE adotta la politica Least Recently Used
allo scopo di rimuovere periodicamente le
registrazioni JDE non utilizzate entro un
certo quanto di tempo
JDE – Affidabilità e QoS
Necessario evitare congestione sul server
JDE a fronte di eccessive richieste di
propagazione delle notifiche;
 Politica Random Early Detection per
prevenire la congestione

 Una
notifica viene propagata con una
probabilità proporzionale al numero di
messaggi presenti nella coda JMS di JDE;

Possibilità di configurazione in cluster ad
alta disponibilità (application-server
dependent)
JDE – Callback asincrono


Necessario minimizzare il tempo impiegato dal
server JDE per effettuare la propagazione delle
notifiche;
Inoltre, problemi legati alla semantica
dell’invocazione sul callback object:
 Se
meccanismo sincrono, possibile stallo del server a
causa di un errore nella gestione della notifica (lato
client);

Meccanismo di callback asincrono assicura:
 Disaccoppiamento
tra server e client JDE.
 Determinazione di eventuali comportamenti erronei
nella gestione delle notifiche da parte dei client JDE.
JDE – Risultati benchmark
JDE - performance
Il tempo di invio e
tempo (millisecondi)
Il tempo di propagazione
200
della notifica
varia
linearmente con il
150
numero di JDEChannel
connessi
100
propagazione delle
notifiche si mantiene
buono all’aumentare del
numero di JDEChannel
ricezione notifica
connessi
invio notifica
50
0
1
5
#listeners
10
Esempio concreto: JDEFilter
JDE manca di un servizio di filtraggio delle
notifiche di alto livello;
 JDEFilter integra i servizi offerti da JDE
permettendo all’utente di definire regole
per il filtraggio delle notifiche in base al
loro contenuto;
 Peculiarità:

 File
di configurazione XML
 Uso di motore inferenziale Prolog per
l’applicazione delle regole di filtraggio;
Conclusioni e sviluppi futuri

JDE estende la piattaforma J2EE con un
servizio di comunicazione ad eventi
 Affidabile
 Efficiente
 Scalabile

Molto lavoro ancora da fare…
 Sistema
di nomi per individuare i client JDE
interessati ad un dato evento;
 Impiego di application server J2EE
professionali (IBM / BEA) per analisi più
approfondite;