ObjectGridEventListener-Plug-in

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.

Übersicht

Ein ObjectGridEventListener-Plug-in ist hilfreich, wenn ein Loader-Plug-in verfügbar ist und Sie JDBC-Verbindungen (Java Database Connectivity) oder Verbindungen zu einem Back-End herstellen müssen, wenn Transaktionen gestartet und beendet werden. Gewöhnlich werden ein ObjectGridEventListener-Plug-in und ein Loader-Plug-in zusammen geschrieben.

ObjectGridEventListener-Plug-in schreiben

Ein ObjectGridEventListener-Plug-in muss die Schnittstelle "ObjectGridEventListener" implementieren, um Benachrichtigungen über wichtige eXtreme-Scale-Ereignisse empfangen zu können. Wenn Sie zusätzliche Ereignisbenachrichtigungen empfangen möchten, können Sie die folgenden Schnittstellen implementieren. Diese Unterschnittstellen sind in der Schnittstelle "ObjectGridEventGroup" enthalten: Weitere Informationen zu diesen Schnittstellen finden Sie in der API-Dokumentation.

Shard-Ereignisse

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.

Lebenszyklusereignisse für Shards

Ereignisse der Methoden "ObjectGridEventListener.initialize" und "ObjectGridEventListener.destroy" werden über die Schnittstelle "ObjectGridEventGroup.ShardLifecycle" bereitgestellt.

Transaktionsereignisse

Ereignisse der Methoden "ObjectGridEventListener.transactionBegin" und "ObjectGridEventListener.transactionEnd" werden über die Schnittstelle "ObjectGridEventGroup.TransactionEvents" bereitgestellt.

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.

ObjectGridEventListener-Plug-in verwenden

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.

ObjectGridEventListener-Plug-in über das Programm konfigurieren

Angenommen, der Klassenname des Ereignis-Listeners eXtreme Scale ist com.company.org.MyObjectGridEventListener. Diese Klasse implementiert die Schnittstelle "ObjectGridEventListener". Das folgende Code-Snippet erstellt einen angepassten ObjectGridEventListener und fügt ihn einem ObjectGrid hinzu.
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid myGrid = objectGridManager.createObjectGrid("myGrid", false);
MyObjectGridEventListener myListener = new MyObjectGridEventListener();
myGrid.addEventListener(myListener);

ObjectGridEventListener-Plug-in mit XML konfigurieren

Sie können ein ObjectGridEventListener-Plug-in auch mit XML konfigurieren. Die folgende XML erstellt eine Konfiguration, die dem zuvor beschriebenen ObjectGrid-Ereignis-Listener entspricht, der über das Programm erstellt wird: Der folgende Text muss in der Datei myGrid.xml enthalten sein:
<?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>
Beachten Sie, dass die Bean-Deklarationen vor den BackingMap-Deklarationen stehen müssen. Stellen Sie diese Datei dem ObjectGridManager-Plug-in bereit, um die Erstellung der Konfiguration zu vereinfachen. Das folgende Code-Snippet veranschaulicht, wie eine ObjectGrid-Instanz mit dieser XML-Datei erstellt wird. In der erstellten ObjectGrid-Instanz ist ein ObjectGridEventListener-Plug-in für das ObjectGrid "myGrid" definiert.
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid myGrid = objectGridManager.createObjectGrid("myGrid", 
	new URL("file:etc/test/myGrid.xml"), true, false);