ObjectGridEventListener プラグイン

ObjectGridEventListener プラグインは、ObjectGrid、断片、およびトランザクション用の WebSphere® eXtreme Scale ライフサイクル・イベントを提供します。 ObjectGridEventListener プラグインは、ObjectGrid が初期化または破棄されたとき、およびトランザクションが開始または終了したときに通知を行います。ObjectGridEventListener プラグインは、 ObjectGridEventListener インターフェースを実装して作成するカスタム・クラスです。 必要な場合、この実装は、ObjectGridEventGroup サブインターフェースを含み、共通の eXtreme Scale プラグイン規則に従います。

概要

ObjectGridEventListener プラグインは Loader プラグインが使用可能である場合に便利で、 トランザクションの開始時と終了時に Java Database Connectivity (JDBC) 接続またはバックエンドへの接続を初期化する必要があります。 通常、ObjectGridEventListener プラグインと Loader プラグインは一緒に作成します。

ObjectGridEventListener プラグインの作成

ObjectGridEventListener プラグインは、重要な eXtreme Scale イベントに関する通知を受け取るために ObjectGridEventListener インターフェースを実装する必要があります。以下のインターフェースを実装して、追加のイベント通知を受け取ることができます。以下のサブインターフェースが ObjectGridEventGroup インターフェースに組み込まれています。 これらのインターフェースについて詳しくは、 API 資料を参照してください。

断片イベント

カタログ・サービスがプライマリー区画やレプリカの断片を Java 仮想マシン (JVM) に配置すると、その JVM 内に新しい ObjectGrid インスタンスが作成されて、その断片をホスティングします。JVM ホスト上でスレッドを開始する必要があるアプリケーションでは、プライマリーがこれらのイベントの通知を必要とします。ObjectGridEventGroup.ShardEvents インターフェースは、shardActivate メソッドおよび shardDeactivate メソッドを宣言します。 これらのメソッドは、断片がプライマリーとして活動化される場合と、断片がプライマリーから非活動化される場合にのみ呼び出されます。アプリケーションでは、これら 2 つのイベントを使用することで、断片がプライマリーのときに追加スレッドを開始したり、断片がレプリカに戻ったときやサービスから除外されたときにスレッドを停止したりできます。

アプリケーションは、 shardActivate メソッドに提供されている ObjectGrid 参照で ObjectGrid#getMap メソッドを使用して特定の BackingMap を検索することで、どの区画が活動状態になっているかを特定できます。 それからアプリケーションは、BackingMap#getPartitionId() メソッドを使用して区画番号を確認できます。 各区画の番号は 0 から始まるため、最後の区画番号はデプロイメント記述子内の区画数 - 1 になります。

断片のライフサイクル・イベント

ObjectGridEventListener.initialize メソッドおよび ObjectGridEventListener.destroy メソッドのイベントは、ObjectGridEventGroup.ShardLifecycle インターフェースを使用して配信されます。

トランザクション・イベント

ObjectGridEventListener.transactionBegin メソッドおよび ObjectGridEventListener.transactionEnd メソッドは、ObjectGridEventGroup.TransactionEvents インターフェースを通じて導き出されます。

ObjectGridEventListener プラグインが ObjectGridEventListener インターフェースおよび ShardLifecycle インターフェースを実装すると、リスナーに配信されるイベントは断片ライフサイクル・イベントだけになります。どの新規 ObjectGridEventGroup 内部インターフェースを実装しても、eXtreme Scale は、新規インターフェースを使用してそうした特定のイベントのみを配信するようになります。この実装では、コードの下位互換性が維持されます。新しい内部インターフェースを使用する場合は、必要な特定のイベントのみを受け取るようにすることができます。

ObjectGridEventListener プラグインの使用

カスタム ObjectGridEventListener プラグインを使用するには、ObjectGridEventListener インターフェースおよびオプションの ObjectGridEventGroup サブインターフェースを実装するクラスをまず作成します。 重大なイベントの通知を受け取れるように、カスタム・リスナーを ObjectGrid に追加します。ObjectGridEventListener プラグインを eXtreme Scale 構成に追加するには、プログラマチック構成と XML 構成の 2 つの方法があります。

ObjectGridEventListener プラグインのプログラマチックな構成

eXtreme Scale イベント・リスナーのクラス名が com.company.org.MyObjectGridEventListener クラスであると想定します。このクラスは、ObjectGridEventListener インターフェースを実装します。 以下のコード・スニペットは、カスタム ObjectGridEventListener を作成し、ObjectGrid に追加します。
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid myGrid = objectGridManager.createObjectGrid("myGrid", false);
MyObjectGridEventListener myListener = new MyObjectGridEventListener();
myGrid.addEventListener(myListener);

XML を使用した ObjectGridEventListener プラグインの構成

ObjectGridEventListener プラグインは、XML を使用して構成することもできます。以下の XML は、前述のプログラムで作成した ObjectGrid イベント・リスナーと同等の構成を作成します。以下のテキストは、myGrid.xml ファイルに存在しなければなりません。
<?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>
Bean 宣言が backingMap 宣言の前にあることに注意してください。このファイルを ObjectGridManager プラグインに提供することで、この構成の作成が容易になります。 以下のコード・スニペットは、この XML ファイルを使用して ObjectGrid インスタンスを作成する方法を示しています。作成した ObjectGrid インスタンスの myGrid ObjectGrid には、ObjectGridEventListener リスナーが設定されています。
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid myGrid = objectGridManager.createObjectGrid("myGrid", 
	new URL("file:etc/test/myGrid.xml"), true, false);