Ein BackingMapLifecycleListener-Plug-in empfängt Benachrichtigungen über Statusänderungsereignisse im eXtreme-Scale-Lebenszyklus für die BackingMap.
Das BackingMapLifecycleListener-Plug-in empfängt ein Ereignis, das ein Objekt "BackingMapLifecycleListener.State" für jede Statusänderung der BackingMap enthält. Jedes BackingMap-Plug-in, das auch die Schnittstelle "BackingMapLifecycleListener" implementiert, wird automatisch als Listener für die BackingMap-Instanz hinzugefügt, in der das Plug-in registriert ist.
Ein BackingMapLifecycleListener-Plug-in ist hilfreich, wenn ein vorhandenes BackingMap-Plug-in Aktivitäten ausführen muss, die sich auf Aktivitäten in einem zugehörigen Plug-in beziehen. Ein Loader-Plug-in muss beispielsweise die Konfiguration aus einem kooperierenden MapIndexPlugin- oder DataSerializer-Plug-in abrufen.
Durch die Implementierung der Schnittstelle "BackingMapLifecycleListener" und die Erkennung des Ereignisses "BackingMapLifecycleListener.State.INITIALIZED" kennt der Loader den Status anderer Plug-ins in der BackingMap-Instanz. Der Loader kann Informationen aus dem kooperierenden MapIndexPlugin- oder DataSerializer-Plug-in sicher abrufen, weil die BackingMap den Status INITIALIZED hat, d. h., dass im anderen Plug-in die Methode initialize() aufgerufen wurde.
Ein BackingMapLifecycleListener kann jederzeit hinzugefügt oder entfernt werden, entweder vor oder nach der Initialisierung des ObjectGrids und dessen BackingMaps.
Ein BackingMapLifecycleListener-Plug-in muss die Schnittstelle "BackingMapLifecycleListener" implementieren, um Benachrichtigungen über wichtige eXtreme-Scale-Ereignisse zu empfangen. Jedes BackingMap-Plug-in kann die Schnittstelle "BackingMapLifecycleListener" implementieren und automatisch als Listener hinzugefügt werden, wenn es auch der BackingMap hinzugefügt wurde.
Weitere Informationen zu diesen Schnittstellen finden Sie in der API-Dokumentation.
public void backingMapStateChanged(BackingMap map,
LifecycleEvent event)
throws LifecycleFailedException {
switch(event.getState()) {
case INITIALIZED: // Alle anderen Plug-ins werden initialisiert.
// Referenz auf Plug-in X aus der Map abrufen.
break;
case DESTROYING: // Beginn der Löschphase
// Referenz auf Plug-in X kann vor diesem Plug-in gelöscht werden.
break;
}
}
Wert von BackingMapLifecycleListener.State | Beschreibung |
---|---|
INITIALIZING | Die Initialisierungsphase für die BackingMap wird eingeleitet. Die BackingMap und die BackingMap-Plug-ins werden initialisiert. |
INITIALIZED | Die Initialisierungsphase der BackingMap ist abgeschlossen. Alle BackingMap-Plug-ins sind initialisiert. Der Status INITIALIZED kann wiederkehren, wenn Shard-Verteilungsaktivitäten (Hochstufung oder Herabstufung) stattfinden. |
STARTING | Die BackingMap-Instanz wird als lokale Instanz, Clientinstanz oder Instanz in einem primären oder Replikat-Shard im Server aktiviert. Alle ObjectGrid-Plug-ins in der ObjectGrid-Instanz, deren Eigner diese BackingMap-Instanz ist, wurden initialisiert. Der Status STARTING kann wiederkehren, wenn Shard-Verteilungsaktivitäten (Hochstufung oder Herabstufung) stattfinden. |
PRELOAD | Die BackingMap-Instanz wird von der API "StateManager" für das vorherige Laden auf den Status PRELOAD gesetzt, oder der konfigurierte Loader lädt die Daten vorher in die BackingMap. |
ONLINE | Die BackingMap-Instanz ist für den Einsatz als lokale Instanz, Clientinstanz oder Instanz in einem primären oder Replikat-Shard im Server bereit. Alle ObjectGrid-Plug-ins in der ObjectGrid-Instanz, deren Eigner diese BackingMap-Instanz ist, wurden initialisiert. Dieser stabile Zustand ist typisch für die BackingMap. Der Status ONLINE kann wiederkehren, wenn Shard-Verteilungsaktivitäten (Hochstufung oder Herabstufung) stattfinden. |
QUIESCE | Die Arbeiten in der BackingMap werden über die API "StateManager" oder durch ein anderes Ereignis eingestellt. Es sind keine neuen Arbeiten zulässig. Ihr Plug-in beendet alle vorhandenen Arbeiten so schnell wie möglich. |
OFFLINE | Die Arbeiten in der BackingMap wurden über die API "StateManager" oder durch ein anderes Ereignis eingestellt. Es sind keine neuen Arbeiten zulässig. |
DESTROYING | Die BackingMap-Instanz leitet die Löschphase ein. BackingMap-Plug-ins für die Instanz werden gelöscht. |
DESTROYED | Die BackingMap-Instanz und alle BackingMap-Plug-ins wurden gelöscht. |
Angenommen, der Klassenname des eXtreme-Scale-Ereignislisteners ist die Klasse "com.company.org.MyBackingMapLifecycleListener". Diese Klasse implementiert die Schnittstelle "BackingMapLifecycleListener".
<?xml version="1.0" encoding="UTF-8" ?>
<objectGridconfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd"
xmlns="http://ibm.com/ws/objectgrid/config">
<objectGrids>
<objectGrid name="myGrid">
<backingMap name="myMap" pluginCollectionRef="myPlugins" />
</objectGrid>
</objectGrids>
<backingMapPluginCollections>
<backingMapPluginCollection id="myPlugins">
<bean id="BackingMapLifecycleListener"
className="com.company.org.MyBackingMapLifecycleListener" />
</backingMapPluginCollection>
</backingMapPluginCollections>
</objectGridConfig>
Stellen Sie diese Datei dem ObjectGridManager-Plug-in bereit, um die Erstellung dieser Konfiguration zu vereinfachen. In der erstellten BackingMap-Instanz ist ein BackingMapLifecycleListener-Listener im ObjectGrid "myGrid" definiert.
Wie BackingMapLifecycleListener werden auch andere BackingMap-Plug-ins, wie z. B. Loader oder MapIndexPlugin, die Sie mit XML angeben und auch die Schnittstelle "BackingMapLifecycleListener" implementieren, automatisch als Lebenszykluslistener hinzugefügt.