RMI und Synchronisierung

Suriel86
Windoof-User
Windoof-User
Beiträge: 28
Registriert: 12. Nov 2008 13:30

RMI und Synchronisierung

Beitrag von Suriel86 »

Hi,

weiß einer ob sich RMI irgendwie um Synchronisierung kümmert? Ich denke da besonders an die Übergabe per Kopie von lokalen Objekten. Was passiert z.B. wenn während des synchronen RMI Aufrufs ein zweiter Thread das lokale Objekt verändert ? Kümmert sich RMI etwa darum, dass auf dem Server die Änderungen weiter propagiert werden ? - Irgendwie glaube ich nicht so recht daran.

Was passiert wenn der Server das lokale Objekt zwischenspeichert und dieses sich ändert, werden dann die Änderungen auf Clientseite automatisch weitergereicht - auch evt. über mehrere Server ?

Wie sieht es mit Remote Objects aus ? Ich nehme an der Entwickler muss sich darum kümmern das auf Server Seite alles Thread Safe verarbeitet wird oder werden die ankommenden Anfragen automatisch sequentiell abgearbeitet ?

Grüße Suriel

Benutzeravatar
Jo(h)nny
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 197
Registriert: 19. Dez 2007 23:39

Re: RMI und Synchronisierung

Beitrag von Jo(h)nny »

was meinst du denn mit "synchroner RMI-Aufruf"? Aufruf einer Funktion, die als "synchron" bezeichnet ist? Wenn ja kann das lokale Objekt nicht während der Ausführung verändert werden. Ich denke (keine Gewähr:)) wenn ein Objekt als "value" geschickt wird, also als Kopie, wäre es zu aufwendig (oder sogar unmöglich) bei der Änderung des Objektes alle existierenden Kopien zu aktualisieren... also ich würde deine Frage mit nein beantworten, also es wird nicht weitergereicht.

Bei RemoteObject's kriegt man die Änderungen auf der Client-Site natürlich mit, da in diesem Fall nur die Referenzen geschickt werden. Wir haben in der letzten Übung bei den Server-Funktionen auch "synchronized" verwendet, soweit ich weiß (und wieder keine Gewähr:)) wird für jede Anfrage, die auf dem Server ankommt, ein Thread erzeugt. Deswegen muss sich der Entwickler darum kümmern, dass die Anfragen sich nicht gegenseitig behindern.
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.

Benutzeravatar
satabin
Mausschubser
Mausschubser
Beiträge: 57
Registriert: 25. Feb 2010 15:32

Re: RMI und Synchronisierung

Beitrag von satabin »

Hallo,

Bei RMI muss man die Objekte untercheiden, die serialisierbar sind und die Remote Objekte.
Wenn man ein serialisierbares Objekt als Parameter einer Remote Methode übergibt, wird es serialisiert. Die writeObject Methode ist synchronized, so wenn das Objekt "thread-safe" ist, sollte es kein Problem sein. Aber dieses serialisierte Objekt, wenn es auf dem Server ist, hat keine Verbindung mit dem ursprünglichen Objekt, so wird es nicht aktualisiert.
Wenn man Remote-Objekte hat ist der Fall anders. Der Client kriegt nicht das eigentliche Objekt sondern ein Stub, der die Verbindungen mit dem Server macht für jede Remote Methode. Das Stub-Objekt hat keinen Zustand, nur das originale Objekt auf dem Server hat den Zustand und die Implementierung.
Wie Jo(h)nny gesagt hat, jede Verbindung hat sein eigenes Thread, und die Aufrufe werden parallel behandelt, so muss man auch der Server synchronisieren falls es nötig ist.

Lucas
Arrière les Esquimaux ! Je rentre seul. Un matador rentre toujours seul ! Plus il est grand, plus il est seul. Je vous laisse à vos banquises, à vos igloos, à vos pingouins. ¡ Por favor Señora ! À quelle heure le train pour Madrid ?

Antworten

Zurück zu „Archiv“