Wie implementiert man das Observer-Muster mit Java RMI?

8

Ich habe einen Client, der einen lang andauernden Prozess auf dem Server startet. In regelmäßigen Abständen möchte ich dem Benutzer zeigen, was im Hintergrund passiert. Der einfachste Ansatz besteht darin, den Server abzufragen, aber ich frage mich, ob es keine Möglichkeit gibt, das Observer-Muster dafür zu implementieren. Leider benutze ich RMI, um mit dem Server zu sprechen, und ich befürchte, dass ich meinen Client dafür zu einem RMI-Server machen muss.

Gibt es einen anderen Weg, den ich vermisse?

    
Aaron Digulla 27.07.2009, 12:06
quelle

4 Antworten

3
blah 20.11.2010, 06:30
quelle
3

RMI kann im Allgemeinen Zweiwegkommunikation unterstützen. (Und ja, RMI ist eine PITA, die man einrichten und mit der man alles andere machen kann.)

Der HTTP-Transport, der über ein CGI-Skript (!) funktioniert, unterstützt dies jedoch nicht.

    
Tom Hawtin - tackline 27.07.2009 14:16
quelle
2

Konsolidierung aller Antworten hier, ich implementierte 2-Wege-RMI zwischen Client und Server, wobei der Server seinen Stub mit Registry

freilegt
  1. Der Client erhält einen Stub des Servers von der rmi-Registry
  2. Dann stellt der Client seinen Stub als Observer auf die addObserver-Methode des Servers
  3. Der Server benachrichtigt die Clients, die diesen Stub verwenden

Der folgende Code gibt eine bessere Idee

%Vor%     
ChatC 05.10.2012 11:29
quelle
1

Ich glaube nicht, dass Sie etwas verpassen. Die einzigen beiden Möglichkeiten bestehen darin, den Server entweder regelmäßig aufzurufen und den Status zu überprüfen (Polling) oder einen Rückruf zu registrieren, den der Server regelmäßig aufruft (Ihr Client muss eine Methode verfügbar machen). IMO, Polling ist ein vollkommen vernünftiger Weg, damit umzugehen.

    
tvanfosson 27.07.2009 12:11
quelle

Tags und Links