Introduzione
Questa linea guida si focalizza sull'identificazione di bean basati sui messaggi. Un'ulteriore guida ai bean basati sui
messaggi viene fornita dalla Linea guida per il prodotto di lavoro: Bean basati sui messaggi, mentre gli EJB
vengono illustrati nella Linea guida per il prodotto di lavoro: Enterprise JavaBean.
Alcune caratteristiche dei bean basati sui messaggi:
-
Sono stateless.
-
Non restituiscono valori o eccezioni ai client.
-
Non hanno interfacce, poiché i client non accedono direttamente ai bean basati sui messaggi ma indirettamente,
inviando messaggi alla destinazione (o endpoint) servita dal bean. Tutti i messaggi sono gestiti da un metodo
listener ("onMessage()" in caso di bean JMS basato sui messaggi). In altri termini, il controllo del tipo deve
essere eseguito nel runtime, attraverso l'operazione "instanceOf()", per determinare il tipo di messaggio ricevuto.
I messaggi possono essere inviati al contenitore da qualsiasi parte, incluso da altri EJB, componenti Web e client
dell'applicazione. Il contenitore richiama EJB basati sui messaggi, se necessario, per gestire gli eventi dei messaggi
in entrata. Gli EJB basati sui messaggi possono accedere ad altri EJB di sessione o di entità o direttamente al livello
EIS per elaborare messaggi.
Identificazione di bean basati sui messaggi
I bean basati sui messaggi consentono di gestire messaggi in modo asincrono. I bean di sessione e di entità possono
essere richiamati soltanto in maniera sincrona. I bean basati sui messaggi sono identificati come parte della
definizione di simultaneità relativa all'intero sistema. Vedere la Linea guida:
Simultaneità per i principi generali sulla simultaneità, come i pattern di progettazione per separare il chiamante
dal codice chiamato. I bean basati sui messaggi sono solitamente identificati come parte del Compito: Descrizione dell'architettura runtime e sono in grado di
assicurare la simultaneità all'interno del contenitore EJB. Quindi, non vengono di solito identificati direttamente
dalle classi di analisi ma servono piuttosto a risolvere problematiche legate alla progettazione, come le prestazioni e
l'accoppiamento.
Principali ragioni per introdurre bean basati sui messaggi:
-
Separazione delle problematiche tra varie aree del software - possono inviare un messaggio a una coda senza essere
accoppiati all'utente di quei messaggi. Possono anche supportare molteplici autori e utenti di messaggi.
-
Aumento delle prestazioni che permette all'autore del messaggio di eseguire l'elaborazione anziché essere bloccato
in una chiamata sincrona (come avviene in una chiamata di un bean di entità o di sessione).
-
Maggiore affidabilità che consente all'autore del messaggio di rimanere attivo anche se i destinatari dei messaggi
non sono in linea.
-
Vengono offerti altri vantaggi dal MOM (Message-Oriented Middleware) sottostante l'interfaccia di messaggistica come, ad esempio, la consegna garantita del messaggio.
-
Un elemento di progettazione esistente (ad esempio, un sistema precedente) che utilizza la messaggistica per
comunicare.
Modellazione di bean basati sui messaggi
Consultare la Linea guida: Identificazione di EJB (Enterprise JavaBean) per una guida generale alla
modellazione di EJB. Notare, tuttavia, che i bean basati sui messaggi sono generalmente modellati come parte della
Vista Processo. Per una guida specifica alla modellazione di bean basati sui messaggi nella Vista Processo, fare
riferimento alla Linea guida: Descrizione dell'architettura runtime per applicazioni J2EE.
Restituire risultati ai mittenti dei messaggi
I bean basati sui messaggi non possono inviare direttamente risposte all'autore del messaggio.
Una strategia tipica per inviare una risposta è quella di introdurre un'altro endpoint o destinazione per la risposta.
Vedere [ROM02] per ulteriori dettagli su questa strategia.
|