Ein ObjectGridEventListener-Plug-in stellt Lebenszyklusereignisse von WebSphere eXtreme Scale für das ObjectGrid, Shards und Transaktionen bereit. Ein ObjectGridEventListener-Plug-in stellt Benachrichtigungen bereit, wenn ein ObjectGrid initialisiert oder gelöscht wird und wenn eine Transaktion gestartet oder beendet wird. ObjectGridEventListener-Plug-ins sind angepasste Klassen, die Sie durch die Implementierung der Schnittstelle ObjectGridEventListener schreiben. Die Plug-ins folgen den allgemeinen Konventionen für eXtreme-Scale-Plug-ins und enthalten optional ObjectGridEventGroup-Unterschnittstellen.
Wenn der Katalogservice primäre Shards und oder Replikat-Shards einer Partition an eine JVM verteilt, wird eine neue ObjectGrid-Instanz in dieser JVM erstellt, die diese Shards aufnimmt. Einige Anwendungen, die Threads in der JVM mit dem primären Shard starten müssen, müssen über diese Ereignisse benachrichtigt werden. Die Schnittstelle "ObjectGridEventGroup.ShardEvents" deklariert die Methoden "shardActivate" und "shardDeactivate". Diese Methoden werden nur aufgerufen, wenn ein Shard als primäres Shard aktiviert wird und wenn das Shard als primäres Shard inaktiviert wird. Diese beiden Ereignisse ermöglichen der Anwendung, zusätzliche Threads zu starten, wenn das Shard ein primäres Shard ist, und die Threads zu stoppen, wenn das Shard wird zu einem Replikat heruntergestuft wird oder wenn das Shard einfach außer Betrieb genommen wird.
Eine Anwendung kann feststellen, welche Partition aktiviert wurde, indem Sie mit der Methode "ObjectGrid#getMap" eine bestimmte BackingMap in der ObjectGrid-Referenz sucht, die an die Methode "shardActivate" übergeben wurde. Die Anwendung kann die Partitionsnummer dann mit Hilfe der Methode "BackingMap#getPartitionId()" anzeigen. Die Partitionen sind von 0 bis zur Anzahl der Partitionen im Implementierungsdeskriptor minus eins nummeriert.
Wenn ein ObjectGridEventListener-Plug-in die Schnittstellen "ObjectGridEventListener" und "ShardLifecycle" implementiert, sind die Lebenszyklusereignisse für Shards die einzigen Ereignisse, die dem Listener zugestellt werden. Nach der Implementierung der neuen inneren ObjectGridEventGroup-Schnittstellen, stellt diese eXtreme-Scale-Instanz nur diese speziellen Ereignisse über die neuen Schnittstellen bereit. Mit diesem Implementierungscode wird die Abwärtskompatibilität gewährleistet. Wenn Sie die neuen inneren Schnittstellen verwenden, können jetzt nur die speziellen Ereignisse empfangen werden, die benötigt werden.
Wenn Sie ein angepasstes ObjectGridEventListener-Plug-in verwenden möchten, müssen Sie zuerst eine Klasse erstellen, die die Schnittstelle "ObjectGridEventListener" und alle optionalen ObjectGridEventGroup-Unterschnittstellen implementiert. Fügen Sie einen angepassten Listener einem ObjectGrid hinzu, um Benachrichtigungen über wichtige Ereignisse zu empfangen. Sie können beim Hinzufügen eines ObjectGridEventListener-Plug-ins zur eXtreme-Scale-Konfiguration zwischen zwei Methoden wählen: programmgesteuerte Konfiguration und XML-Konfiguration.
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid myGrid = objectGridManager.createObjectGrid("myGrid", false);
MyObjectGridEventListener myListener = new MyObjectGridEventListener();
myGrid.addEventListener(myListener);
<?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">
<bean id="ObjectGridEventListener"
className="com.company.org.MyObjectGridEventListener" />
<backingMap name="Book"/>
</objectGrid>
</objectGrids>
</objectGridConfig>
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid myGrid = objectGridManager.createObjectGrid("myGrid",
new URL("file:etc/test/myGrid.xml"), true, false);