InterstageでGlassFish Serverクラスターを使用する場合には、Interstageのライフサイクルモジュールを利用することによって、GlassFish Serverクラスターの起動時にApcoordinatorで作成したセションBeanを実行することができます。ライフサイクルモジュールは、GlassFish Serverクラスターの起動、停止などのイベントを契機として任意の処理を実行するためのクラスです。Apcoordinatorは、GlassFish Serverクラスターの起動時にセションBeanを呼び出すライフサイクルモジュールを用意しており、利用者が独自にライフサイクルモジュールを開発することなく、GlassFish Serverクラスター起動時にセションBeanを呼び出すことが可能です。
Apcoordinatorが提供するライフサイクルモジュールを利用すると、以下の処理が実現できます。
GlassFish Serverクラスターの起動時に、セションBeanで利用者定義の処理を実行します。
GlassFish Serverクラスターの起動時に、セションBeanの初期化処理を実行します。 セションBeanを最初に実行した時は、設定ファイルの読み込みやクラスのロードなどの初期化に時間がかかる場合があります。 GlassFish Serverクラスターの起動時にセションBeanを実行することで、このような初期化処理をあらかじめ実行することができます。
Apcoordinatorが提供するライフサイクルモジュールは、ライフサイクルイベントREADY_EVENTが発生したときにセションBeanを呼び出します。 READY_EVENTは、アプリケーションのロード後、アプリケーションへのアクセス受付開始後に発生します。
注意
Apcoordinatorが提供するライフサイクルモジュールから呼び出せるのは、Apcoordinatorで作成したセションBeanです。
ライフサイクルモジュールからは、ローカルビジネスインターフェイスを使ってセションBeanを呼び出すことはできません。
GlassFish Serverクラスターの起動時にセションBeanで利用者定義の処理を実行する場合は、実行する処理をアプリケーションに追加します。また、Apcoordinatorが提供するライフサイクルモジュールをGlassFish Serverクラスターに設定します。
ここでは処理の追加方法を説明します。ライフサイクルモジュールの設定については21.2.8.3 ライフサイクルモジュールの設定を参照してください。
ビジネスクラスへのメソッドの追加
GlassFish Serverクラスター起動時に実行するメソッドをビジネスクラスに追加します。引数はDispatchContextのみです。以下の例では、メソッド名をstartEjbとしています。
package somepackage; import com.fujitsu.uji.DispatchContext; import com.fujitsu.uji.GenericHandler; public class SomeHandler extends GenericHandler { public void startEjb(DispatchContext context) { // GlassFish起動時に実行する処理を記述します。 ... } ... }
処理結果に応じてGlassFish Serverクラスターの起動を中止させる場合は、以下の設定と処理が必要です。
GlassFish Serverクラスターの起動を中止させたい場合は、ビジネスクラスから例外を発生させます。
例外発生時にGlassFish Serverクラスターの起動を中止するように、ライフサイクルモジュールを設定します。詳細は21.2.8.3 ライフサイクルモジュールの設定を参照してください。
コマンドマップの追加
作成したメソッドを、コマンドマップに追加します。データBeanはなし、コマンドはuji.initializeです。
;uji.initialize=somepackage.SomeHandler.startEjb
GlassFish Serverクラスターの起動時にセションBeanの初期化処理を実行する場合は、 Apcoordinatorが提供するライフサイクルモジュールをGlassFish Serverクラスターに設定します。詳細は21.2.8.3 ライフサイクルモジュールの設定を参照してください。セションBeanに処理を追加する必要はありません。
ライフサイクルモジュールは、asadminコマンドのcreate-lifecycle-moduleサブコマンドを使って設定します。
Apcoordinatorが提供するライフサイクルモジュールを使用するには以下の設定が必要です。
設定項目 | 設定値 |
GlassFish運用コマンドの項目名 | |
オペランド | ライフサイクルモジュールの定義名を指定します。"initialize"など、適宜設定します。 |
オプション | ライフサイクルモジュールの定義を登録するGlassFish名を指定します。 |
オプション | com.fujitsu.uji.ejb.workunit.ReadyListenerを指定します。 |
オプション | ライフサイクルモジュールのクラスパスを指定します。以下のクラスパスを指定します。
|
オプション | 呼び出すセションBeanのJNDI名を以下の形式で指定します。 ejb=JNDI名 |
上記以外の項目は必要に応じて設定してください。