ObjectGridLifecycleListener プラグイン

ObjectGridLifecycleListener プラグインは、データ・グリッドの WebSphere® eXtreme Scale ライフサイクル状態変更イベントの通知を受け取ります。

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

概要

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

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

ObjectGridLifecycleListener プラグインは、ObjectGrid が初期化される前または後のどの時点においても追加できます。

ObjectGridLifecycleListener プラグインの作成

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

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

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

ObjectGridLifecycleListener は、objectgridStateChanged メソッドでイベントからライフサイクル状態を取得します。例えば、次のとおりです。
public void objectGridStateChanged(ObjectGrid grid, 
                                   LifecycleEvent event) 
throws LifecycleFailedException {
  switch(event.getState()) {
    case INITIALIZED: // All other plug-ins are initialized.
      // Retrieve reference to plug-in X for use from grid.
      break;
    case DESTROYING:  // Destroy phase is starting
      // Eliminate reference to plug-in X it may be destroyed before this plug-in
      break;
  }

次の表に、ObjectGridLifecycleListener に送信したライフサイクル・イベントと、ObjectGrid および他のプラグイン・オブジェクトとの関係を説明します。

ObjectGridLifecycleListener.State 値 説明
INITIALIZING ObjectGrid 初期化フェーズを開始しています。ObjectGrid および ObjectGrid プラグインが初期化されるところです。
INITIALIZED ObjectGrid 初期化フェーズが完了しました。すべての ObjectGrid プラグインが初期化されました。INITIALIZED 状態は、断片配置アクティビティー (プロモーションまたはデモーション) が発生すると、再発する可能性があります。この ObjectGrid インスタンスが所有する BackingMap インスタンス内のすべての BackingMap プラグインは、初期化されました。
STARTING ObjectGrid インスタンスは、ローカル・インスタンス、クライアント・インスタンス、あるいは、サーバー上のプライマリーまたはレプリカ断片のインスタンスとしての使用のためにアクティブ化されつつあります。 STARTING 状態は、断片配置アクティビティー (プロモーションまたはデモーション) が発生すると、再発する可能性があります。
PRELOAD ObjectGrid インスタンスは、StateManager API または他の構成によって、PRELOAD 状態に設定されます。
ONLINE ObjectGrid インスタンスは、ローカル・インスタンス、クライアント・インスタンス、あるいは、サーバー上のプライマリーまたはレプリカ断片のインスタンスとして作動可能です。 この定常状態は、ObjectGrid で典型的な状態です。ONLINE 状態は、断片配置アクティビティー (プロモーションまたはデモーション) が発生すると、再発する可能性があります。
QUIESCE StateManager API または他のイベントの結果として、ObjectGrid での作業を停止しつつあります。 新規の作業はできません。すべての既存の作業をできるだけ速やかに終了します。
OFFLINE StateManager API または別のイベントの結果として、ObjectGrid 上ですべての作業は停止しています。 新規の作業はできません。
DESTROYING ObjectGrid インスタンスは破棄フェーズを開始しています。インスタンスの ObjectGrid プラグインは、破棄されるところです。破棄フェーズで、この ObjectGrid インスタンスが所有する BackingMap インスタンスもすべて破棄されます。
DESTROYED ObjectGrid インスタンス、その BackingMap インスタンス、およびすべての ObjectGrid プラグインは破棄されました。

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

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

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

Bean 宣言が backingMap 宣言の前にあることに注意してください。このファイルを ObjectGridManager プラグインに提供することで、この構成の作成が容易になります。

前の例の登録済み ObjectGridLifecycleListener と同様に、やはり ObjectGridLifecycleListener インターフェースを実装する、XML を使用して指定される他の ObjectGrid プラグイン (CollisionArbiter や TransactionCallback など) も、ライフサイクル・リスナーとして自動的に追加されます。