BackingMapLifecycleListener プラグイン

BackingMapLifecycleListener プラグインは、バックアップ・マップの WebSphere® eXtreme Scale ライフサイクル状態変更イベントの通知を受け取ります。

BackingMapLifecycleListener プラグインは、バックアップ・マップのそれぞれの状態変更について BackingMapLifecycleListener.State オブジェクトを含んだイベントを受け取ります。 BackingMapLifecycleListener インターフェースも実装する BackingMap プラグインは、このプラグインが登録されている BackingMap インスタンスのリスナーとして自動的に追加されます。

概要

BackingMapLifecycleListener プラグインは、既存の BackingMap プラグインが関連したプラグインの中のアクティビティーに関係するアクティビティーを実行する必要がある場合に役立ちます。例として、Loader プラグインは、協力する MapIndexPlugin または DataSerializer プラグインから構成を取得する必要が生じる場合もあります。

BackingMapLifecycleListener インターフェースを実装し、BackingMapLifecycleListener.State.INITIALIZED イベントを検出することで、ローダーは、BackingMap インスタンス内の他のプラグインの状態について知ることができます。BackingMap が INITIALIZED 状態にある、つまり、他のプラグインがそれの initialize() メソッドを呼び出し済みであるため、ローダーは、協力する MapIndexPlugin または DataSerializer プラグインから情報を安全に取得できます。

BackingMapLifecycleListener は、ObjectGrid およびその BackingMaps が初期化される前または後のどの時点においても、追加または削除できます。

BackingMapLifecycleListener プラグインの作成

BackingMapLifecycleListener プラグインは、重要な eXtreme Scale イベントに関する通知を受け取るために BackingMapLifecycleListener インターフェースを実装する必要があります。BackingMap プラグインは BackingMapLifecycleListener インターフェースを実装できます。また、このプラグインは、バックアップ・マップに追加されるときにリスナーとして自動的に追加することができます。

これらのインターフェースについて詳しくは、API 資料を参照してください。

ライフサイクル・イベントとプラグインの関係

BackingMapLifecycleListener は、backingMapStateChanged メソッドでイベントからライフサイクル状態を取得します。例えば、次のとおりです。
public void backingMapStateChanged(BackingMap map, 
                                   LifecycleEvent event) 
throws LifecycleFailedException {
  switch(event.getState()) {
    case INITIALIZED: // All other plug-ins are initialized.
      // Retrieve reference to plug-in X for use from map.
      break;
    case DESTROYING:  // Destroy phase is starting
      // Eliminate reference to plug-in X it may be destroyed before this plug-in
      break;
  }
}
次の表に、BackingMapLifecycleListener プラグインに送信したライフサイクル・イベントと、BackingMap および他のプラグイン・オブジェクトとの関係を説明します。
BackingMapLifecycleListener.State 値 説明
INITIALIZING BackingMap 初期化フェーズを開始しています。BackingMap および BackingMap プラグインが初期化されるところです。
INITIALIZED BackingMap 初期化フェーズが完了しました。すべての BackingMap プラグインが初期化されました。INITIALIZED 状態は、断片配置アクティビティー (プロモーションまたはデモーション) が発生すると、再発する可能性があります。
STARTING BackingMap インスタンスは、ローカル・インスタンス、クライアント・インスタンス、あるいは、サーバー上のプライマリーまたはレプリカ断片のインスタンスとしての使用のためにアクティブ化されつつあります。 この BackingMap インスタンスを所有する ObjectGrid インスタンス内のすべての ObjectGrid プラグインが初期化されました。STARTING 状態は、断片配置アクティビティー (プロモーションまたはデモーション) が発生すると、再発する可能性があります。
PRELOAD BackingMap インスタンスがプリロードに備えて StateManager API によって PRELOAD 状態に設定されているか、構成済みのローダーがデータをバックアップ・マップにプリロードしています。
ONLINE BackingMap インスタンスは、ローカル・インスタンス、クライアント・インスタンス、あるいは、サーバー上のプライマリーまたはレプリカ断片のインスタンスとして作動可能です。 この BackingMap インスタンスを所有する ObjectGrid インスタンス内のすべての ObjectGrid プラグインが初期化されました。この定常状態は、BackingMap で典型的な状態です。ONLINE 状態は、断片配置アクティビティー (プロモーションまたはデモーション) が発生すると、再発する可能性があります。
QUIESCE StateManager API または他のイベントの結果として、BackingMap での作業を停止しつつあります。 新規の作業はできません。プラグインは、すべての既存の作業をできるだけ速やかに終了します。
OFFLINE StateManager API または別のイベントの結果として、BackingMap 上ですべての作業は停止しています。新規の作業はできません。
DESTROYING BackingMap インスタンスは破棄フェーズを開始しています。インスタンスの BackingMap プラグインは、破棄されるところです。
DESTROYED BackingMap インスタンスとすべての BackingMap プラグインは破棄されました。

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

eXtreme Scale イベント・リスナーのクラス名が com.company.org.MyBackingMapLifecycleListener クラスであると想定します。このクラスは、BackingMapLifecycleListener インターフェースを実装します。

BackingMapLifecycleListener プラグインは、XML を使用して構成することができます。次のテキストがオブジェクト・グリッド 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">
            <backingMap name="myMap" pluginCollectionRef="myPlugins" />
        </objectGrid>
    </objectGrids>
    <backingMapPluginCollections>
        <backingMapPluginCollection id="myPlugins">
            <bean id="BackingMapLifecycleListener"
                  className="com.company.org.MyBackingMapLifecycleListener" />
        </backingMapPluginCollection>
    </backingMapPluginCollections>
</objectGridConfig>

このファイルを ObjectGridManager プラグインに提供することで、この構成の作成が容易になります。作成した BackingMap インスタンスの myGrid ObjectGrid には、BackingMapLifecycleListener リスナーが設定されています。

BackingMapLifecycleListener と同様に、やはり BackingMapLifecycleListener インターフェースを実装する、XML を使用して指定される他の BackingMap プラグイン (Loader や MapIndexPlugin など) も、ライフサイクル・リスナーとして自動的に追加されます。