WebSphere eXtreme Scale enthält ObjectGrid- und BackingMap-Plug-ins. Diese Plug-ins werden in Java implementiert und mithilfe der ObjectGrid-XML-Deskriptordatei konfiguriert. Wenn Sie ein dynamisches Plug-in erstellen möchten, das dynamisch aktualisiert werden kann, müssen die Plug-ins ObjectGrid- und BackingMap-Lebenszyklusereignisse erkennen, weil sie während einer Aktualisierung unter Umständen einige Aktionen ausführen müssen. Die Erweiterung eines Plug-in-Bundles mit Callback-Methoden und/oder Ereignislistenern für den Lebenszyklus ermöglicht dem Plug-in, diese Aktionen zu den entsprechenden Zeiten auszuführen.
Alle Plug-ins von eXtreme Scale gelten entweder für eine BackingMap- oder ObjectGrid-Instanz. Viele Plug-ins interagieren auch mit anderen Plug-ins. Ein Loader- und ein TransactionCallback-Plug-in arbeiten beispielsweise zusammen, um ordnungsgemäß mit einer Datenbanktransaktion und den verschiedenen Datenbank-JDBC-Aufrufen zu interagieren. Einige Plug-ins müssen unter Umständen auch Konfigurationsdaten aus anderen Plug-ins zwischenspeichern, um die Leistung zu verbessern.
Die Plug-ins BackingMapLifecycleListener und ObjectGridLifecycleListener stellen Lebenszyklusoperationen für die entsprechenden BackingMap- und ObjectGrid-Instanzen bereit. Dieser Prozess ermöglicht die Benachrichtigung von Plug-ins, wenn die übergeordnete BackingMap- oder ObjectGrid-Instanz und die entsprechenden Plug-ins geändert werden. BackingMap-Plug-ins implementieren die Schnittstelle BackingMapLifecyleListener, und ObjectGrid-Plug-ins implementieren die Schnittstelle ObjectGridLifecycleListener. Diese Plug-ins werden automatisch aufgerufen, wenn sich der Lebenszyklus der übergeordneten BackingMap- oder ObjectGrid-Instanz ändert. Weitere Informationen zu Lebenszyklus-Plug-ins finden Sie im Artikel Plug-in-Lebenszyklen verwalten.
Wenn Sie direkt auf ein anderes Plug-in zugreifen, greifen Sie über den OSGi-Container auf dieses Plug-in zu, um sicherzustellen, dass alle Teile des Systems auf das richtige Plug-in verweisen. Wenn beispielsweise eine Komponente in der Anwendung direkt auf eine Instanz eines Plug-ins zugreift oder diese zwischenspeichert, verwaltet sie ihre Referenz auf diese Version des Plug-ins selbst nach einer dynamischen Aktualisierung des Plug-ins. Dieses Verhalten kann zu anwendungsbezogenen Problemen und zu Speicherverlusten führen. Schreiben Sie deshalb Code, der von dynamischen Plug-ins abhängig ist, die ihre Referenzen mit der OSGi-Semantik getService() abrufen. Wenn die Anwendung Plug-ins zwischenspeichern muss, empfängt sie über die Schnittstellen ObjectGridLifecycleListener und BackingMapLifecycleListener Lebenszyklusereignisse. Die Anwendung muss auch in der Lage sein, bei Bedarf ihren Cache threadsicher zu aktualisieren.
Alle Plug-ins von eXtreme Scale, die mit OSGi verwendet werden, müssen auch die entsprechenden BackingMapPlugin- bzw. ObjectGridPlugin-Schnittstellen implementieren. Neue Plug-ins wie die Schnittstelle MapSerializerPlugin setzen dieses Verfahren um. Diese Schnittstellen stellen der eXtreme-Scale-Laufzeitumgebung und OSGi eine konsistente Schnittstelle für die Injektion von Statusinformationen in das Plug-in und die Steuerung des Lebenszyklus bereit.
Verwenden Sie diese Aufgabe, um festzulegen, dass eine Benachrichtigung gesendet wird, wenn Peer-Plug-ins aktualisiert werden. Sie können eine Listener-Factory erstellen, die eine Listenerinstanz erzeugt.
Durch die Implementierung der Schnittstelle ObjectGridPlugin oder BackingMapPlugin kann eXtreme Scale den Lebenszyklus Ihres Plug-ins zu den richtigen Zeiten aktualisieren.
Durch die Implementierung der Schnittstelle ObjectGridLifecycleListener oder BackingMapLifecycleListener wird das Plug-in automatisch als Listener der zugeordneten ObjectGrid- oder BackingMap-Lebenszyklusereignisse registriert. Das Ereignis INITIALIZING wird verwendet, um zu signalisieren, dass alle ObjectGrid- und BackingMap-Plug-ins initialisiert wurden und für Suchoperationen und Verwendung verfügbar sind. Das Ereignis ONLINE wird verwendet, um zu signalisieren, dass das ObjectGrid online und für die Verarbeitung von Ereignissen bereit ist.