
Shared Locks dienen zur Synchronisation von Änderungen auf Shared Objects unter den verschiedenen VMs einer Serverinstanz. In der klassischen Java-Sprache gibt es das synchronize&wait-Pattern, der mittels Sprachkonstrukte ( synchronize(), wait()) Java-Threads beim Zugriff auf einem Objekt im local Heap aufeinander warten lässt. Dies funktioniert jedoch nur innerhalb einer VM.
Im VM Container braucht man bei Änderungen auf Java-Objekten im Shared Memory einen ähnlichen Mechanismus überall dort, wo Datenkonsistenz zwischen den VMs gewährleistet werden muss (typischer Fall - Konfigurationsänderungen zu einer Applikation).
Da eine Instanz der Klasse SharedLock von allen VMs einer Instanz genutzt werden kann ("shareable"), kann sie in Shared Closures verwendet werden.
Design
Die Shared Locks sind als Klasse SharedLock implementiert.
Der Verwender (Java-Programmierer) kann sich also über eine interne API eine neue (oder bestehende) Shared Lock Instanz besorgen und dann mittels eines Methodenaufrufs die geschützte Code-Strecke definieren, die atomar ausgeführt werden soll. Der VMC sorgt dann dafür, dass in diesem geschützten Code-Block zum gleichen Zeitpunkt nur eine VM aktiv ist. Alle anderen VMs, die in diesen Block hinein wollen, müssen warten bis die aktive VM den geschützten Block wieder verlässt.
Weitere Informationen
Sie können in der VMC Systemadministration (Transaktion SM53) die bestehenden Shared Locks anzeigen.
In der VM Übersicht (Transaktion SM52) können Sie statistische Informationen zu Shared Locks anzeigen.