RMI (Remote Method Invocation) Client Callbacks können einem ganz schön den Tag schwer machen. Mir ist es gelungen einen ordentlichen Deadlock zu erzeugen, beim Einsatz von RMI Callbacks.
Folgendes Szenario:
Deadlock wegen zyklischen Wartens.
Folgendes Szenario:
- Ein Client ruft mittels RMI eine synchronized Methode am Server auf.
- Diese synchronized Methode führt Zustandsveränderungen am Server aus und sieht im Anschluss vor, dass die Beobachter (Observer oder Listener) davon in Kenntnis gesetzt werden.
- Der Client wartet nun auf die Beendigung der entfernt aufgerufenen Methode.
- In der Zwischenzeit bekommt der Client (der Beobachter sein muss) aber vom Server eine Update Nachricht über RMI (Callback).
Dieser Ablauf birgt nun die Möglichkeit eines Deadlock.
- Die Update-Methode am Client versucht eine weitere synchronized Methode innerhalb der selben Klasse am Server zu starten.

1 Kommentar:
Was Du da schreibst, das verstehe ich nicht ganz.
Kommentar veröffentlichen