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.