ObjectGridEventListener プラグインは、ObjectGrid、断片、およびトランザクション用の WebSphere® eXtreme Scale ライフサイクル・イベントを提供します。 ObjectGridEventListener プラグインは、ObjectGrid が初期化または破棄されたとき、およびトランザクションが開始または終了したときに通知を行います。ObjectGridEventListener プラグインは、 ObjectGridEventListener インターフェースを実装して作成するカスタム・クラスです。 必要な場合、この実装は、ObjectGridEventGroup サブインターフェースを含み、共通の eXtreme Scale プラグイン規則に従います。
カタログ・サービスがプライマリー区画やレプリカの断片を Java 仮想マシン (JVM) に配置すると、その JVM 内に新しい ObjectGrid インスタンスが作成されて、その断片をホスティングします。JVM ホスト上でスレッドを開始する必要があるアプリケーションでは、プライマリーがこれらのイベントの通知を必要とします。ObjectGridEventGroup.ShardEvents インターフェースは、shardActivate メソッドおよび shardDeactivate メソッドを宣言します。 これらのメソッドは、断片がプライマリーとして活動化される場合と、断片がプライマリーから非活動化される場合にのみ呼び出されます。アプリケーションでは、これら 2 つのイベントを使用することで、断片がプライマリーのときに追加スレッドを開始したり、断片がレプリカに戻ったときやサービスから除外されたときにスレッドを停止したりできます。
アプリケーションは、 shardActivate メソッドに提供されている ObjectGrid 参照で ObjectGrid#getMap メソッドを使用して特定の BackingMap を検索することで、どの区画が活動状態になっているかを特定できます。 それからアプリケーションは、BackingMap#getPartitionId() メソッドを使用して区画番号を確認できます。 各区画の番号は 0 から始まるため、最後の区画番号はデプロイメント記述子内の区画数 - 1 になります。
ObjectGridEventListener プラグインが ObjectGridEventListener インターフェースおよび ShardLifecycle インターフェースを実装すると、リスナーに配信されるイベントは断片ライフサイクル・イベントだけになります。どの新規 ObjectGridEventGroup 内部インターフェースを実装しても、eXtreme Scale は、新規インターフェースを使用してそうした特定のイベントのみを配信するようになります。この実装では、コードの下位互換性が維持されます。新しい内部インターフェースを使用する場合は、必要な特定のイベントのみを受け取るようにすることができます。
カスタム ObjectGridEventListener プラグインを使用するには、ObjectGridEventListener インターフェースおよびオプションの ObjectGridEventGroup サブインターフェースを実装するクラスをまず作成します。 重大なイベントの通知を受け取れるように、カスタム・リスナーを ObjectGrid に追加します。ObjectGridEventListener プラグインを eXtreme Scale 構成に追加するには、プログラマチック構成と XML 構成の 2 つの方法があります。
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);