Java Reference
In-Depth Information
wird nur dann aufgerufen, falls die übergebenen Argumente in der Sendemethode typkom-
patibel sind mit den Parametern der Methode, wobei die Reihenfolge der Parameter eine
Rolle spielt. Bei den unterschiedlichen Varianten des Sendens gibt es folgende Unterschiede:
! Es gibt Sendemethoden, bei denen man außer den Parametern zusätzlich einen String
(hint) angeben kann. Eine @Listener-Methode wird nur dann aufgerufen, wenn sie diesen
String in der @Listener-Annotation als Hint angegeben hat.
! Neben den Parametern und einem eventuellen Hint kann in Form eines Class-Objekts der
Rückgabetyp angegeben werden. Eine Methode wird nur dann aufgerufen, wenn sie die-
sen Rückgabetyp besitzt.
! Beim Senden einer Nachricht über den Bus werden bekanntlich alle passenden Methoden
aufgerufen. Der Sendeaufruf kehrt erst zurück, wenn alle aufgerufenen Methoden ausge-
führt wurden. Es gibt Sendemethoden, die void sind und damit Rückgabewerte der aufge-
rufenen Methoden ignorieren. Es gibt aber auch solche Sendemethoden, die genau einen
Wert (irgendeinen) Wert zurückliefern, und solche, die alle Rückgabewerte in einer Col-
lection zurückgeben.
Es gibt nicht für alle theoretisch möglichen Kombinationen Sendemethoden (mit/ohne Hint,
mit/ohne Angabe eines Rückgabetyps usw.). RRiBbit bietet über neun Methoden acht unter-
schiedliche Sendevarianten an (eine Variante steht unter zwei unterschiedlichen Namen
zur Verfügung, darunter ein Mal unter dem einfachen Namen „send“).
Will man in den Methoden einer Klasse den Request-Response-Bus benutzen, so besitzen
diese in der Regel entweder ein Attribut auf den Bus, das im Konstruktor gesetzt wird, oder
sie beschaff en sich die Referenz selbst über die statische Methode get der Klasse RRB.
Eine RRiBbit-Anwendung besteht neben Hilfsklassen somit aus Klassen, in denen Nachrich-
ten auf den RRiBbit-Bus gesendet werden und Klassen, die mit @Listener annotierte Metho-
den besitzen, um auf das Senden von Nachrichten zu reagieren (wobei natürlich auch in
Klassen mit @Listener-Methoden etwas auf den Bus gesendet werden darf).
Im Hauptprogramm wird zuerst ein ListenerObjectCreator erzeugt. Wie der Name sagt
erzeugt dieser die Listener-Objekte. Ein Listener-Objekt ist keines, dessen Klasse die @Liste-
ner-Methoden enthält, sondern ein Listener-Objekt kommt vom Framework und repräsen-
tiert die @Listener-Methode eines Objekts. Es enthält u. a. die annotierte Methode in Form
eines Method-Objekts, den Hint und die Referenz auf das Objekt der Klasse mit den @Liste-
ner-Methoden. Durch die Listener-Objekte wird eine schnelle Auswahl und ein schneller
Aufruf der betroff enen Methoden realisiert. Es gibt mehrere ListenerObjectCreator-Varian-
ten. Man kann entweder Objekte angeben oder Klassen (wobei das Framework zu jeder
Klasse dann ein Objekt erzeugt) oder Packages, die nach Klassen mit @Listener-Annota-
tionen durchsucht werden. Nachdem man im ersten Schritt einen ListenerObjectCreator
erzeugt hat, muss man im zweiten Schritt einen RequestResponseBus erzeugen, wobei der
ListenerObjectCreator als Parameter übergeben wird. Schließlich muss nur noch die Anwen-
dung in Gang gesetzt werden, was eventuell dadurch erfolgt, dass eine erste Nachricht auf
den Bus gesendet wird.
 
Search WWH ::




Custom Search