Module Communication
Service-Architektur
Das Interface ServiceProvider legt die Schnittstellen zum initialisieren, starten und stoppen eines Services fest.
Jeder Service implementiert ein Interface, dass den ServiceProvider um die service-spezifische Funktionalität erweitert, z.B. JxtaConnection implementiert den
ConnectionServiceProvider. Dadurch werden die eigentlichen Services austauschbar.
Die Services müssen im ServiceProviderManager registriert werden. Sie können dann später ebenfalls über diesen ServiceProviderManager aufgerufen werden.
Für die Registrierung in dem ServiceProviderManager halten die jeweiligen ServiceProvider die Konstante SERVICE_NAME.
JxtaConnection
Durch starten der JxtaConnection als ConnectionService wird die standardmäßige NetPeerGroup und die PeerGroup mit dem VSISGroup-Advertisement erzeugt.
Aus der PeerGroup wird der PipeSevice und der DiscoveryService geholt. Dann wird über den entsprechenden MembershipService der PeerGroup
beigetreten. Das PipeAdvertisement der JxtaConnection wird zum erzeugen der InputPipe des ReceiveService benutzt. Die JxtaConnection gibt
über die Methode getUUID() eine ID zurück, mit der User identifiziert werden können
SendService
Der SendService versendet ihm übergebene JIM-Messages. Dazu erzeugt er eine JXTA-Message, verschlüsselt gegebenenfalls die JIM-Message mit Hilfe des CryptoControllers
und fügt den Absender, den Typ der Message und den Inhalt (also die JIM-Message im XML-Format) in die JXTA-Message ein. Aus der JIM-Message wird der Empfänger
ausgelesen, dessen PipeAdvertisement für den Aufbau der Output-Pipe benutzt wird. Über diese Pipe wird dan die JXTA-Message verschickt.
ReceiveService
Durch das Starten des ReceiveService wird die JxtaConnection geholt und eine InputPipe erzeugt. Dann wartet der ReceiveService auf
ankommende Messages. Über den Jxta-PipeMsgEvent wird der ReceiveService bei ankommender Message "aufgeweckt". Aus der JXTA-Message wird der Typ der JIM-Message
geholt und über Reflection ein JIM-Message Objekt des entsprechenden Typs erzeugt. Der Content der JXTA-Message wird ausgelesen und über
die fromXML-Methode in eine JIM-Message umgewandelt. Diese wird an den CryptoController übergeben, der sie ggf. entschlüsselt. Danach
werden die jeweiligen angemeldeten Listener über den Erhalt einer Message benachrichtigt.
MessageObserver
Der ReceiveService implementiert den MessageObserver. MessageListener können sich beim ReceiveService mit dem Typ der Nachrichten, über
deren Erhalt sie benachrichtigt werden wollen, anmelden bzw. abmelden.
Weiterführende Szenarien:
<< Zurück zum Index.