5. ライフサイクルモジュール

ライフサイクルモジュールについて説明します。

5.1. ライフサイクルモジュールとは

ライフサイクルモジュールとは、WebOTX ASの起動・停止のライフサイクルの状態に合わせ実行されるJavaクラスまたはモジュールであり、ユーザが作成した任意のクラスまたはモジュールをライフサイクルモジュールとすることが可能です。

WebOTX ASではライフサイクルの状態管理のために以下の状態を定義しています。ライフサイクルモジュールはこの状態により管理され、WebOTX ASのライフサイクルに同期した処理を実行します。

ライフサイクルの状態一覧
状態 説明
INIT 初期化処理中であることを表します
STARTUP 起動処理中であることを表します
READY サービス開始処理中であることを表します
SHUTDOWN 停止処理中であることを表します
TERMINATION リソース開放処理中であることを表します

ライフサイクルモジュールが複数登録されている場合は、各ライフサイクルモジュールは並列に処理されます。たとえば、WebOTX ASが初期化の状態であるとき、全てのライフサイクルモジュールの状態はINITであり、全てのライクサイクルモジュールのINITイベントによる処理が終了するまで、次の状態には移行しません。


5.2. ライフサイクルモジュール登録の流れ

ライフサイクルモジュールを登録する場合の流れについて説明します。

  1. ライフサイクルモジュールの作成

    登録するコンポーネントとLifecycleListener実装クラスを作成します。登録に必要なファイルは以下のとおりです。


  2. ライフサイクルモジュールの登録

    ライフサイクルモジュールをWebOTX ASに登録します。登録は統合運用管理ツールおよび運用管理コマンドで行なうことができます。

  3. ライフサイクルモジュールの設定

    ライフサイクルモジュールの設定を変更します。この設定はライフサイクルモジュールの登録時にも行うことができます。登録後に設定の変更が必要な場合に行ってください。変更は統合運用管理ツールおよび運用管理コマンドで行なうことができます。

5.3. ライフサイクルモジュールの作成

WebOTX ASへのライフサイクルモジュールの登録にはWebOTX ASとライフサイクルモジュールのインタフェースとして、LifecycleListenerインタフェースを実装したクラスを作成する必要があります。

LifecycleListenerインタフェースはPublicメソッドとしてhandleEventを持ちます。WebOTX ASはこのメソッドを呼び出し、LifecycleListener実装クラスに状態情報を保持したLifecycleEventクラスのオブジェクトを渡します。

LifecycleEventクラスは状態情報として以下のpublicかつstaticなフィールドを持ちます。

状態情報フィールド一覧
フィールド名 説明
INIT_EVENT ライフサイクルモジュールの初期化処理中であることを表します
STARTUP_EVENT ライフサイクルモジュールの起動処理中であることを表します
READY_EVENT ライフサイクルモジュールのサービス開始処理中であることを表します
SHUTDOWN_EVENT ライフサイクルモジュールの停止処理中であることを表します
TERMINATION_EVENT ライフサイクルモジュールのリソース開放処理中であることを表します

LifecycleListener実装クラスでは、この状態情報に応じた処理を実装する必要があります。

LifecycleListener実装クラスの実装方法については[ ライフサイクルモジュールの開発 ] を参照してください。

5.4. 統合運用管理ツールによる登録・登録削除および一覧の取得

統合運用管理ツールよりライフサイクルモジュールの登録・登録削除および一覧を取得する方法について説明します。なお、ここでは以下の条件でライフサイクルモジュールの登録を行っています。

ライフサイクルモジュール登録時の条件
LifecycleListener実装クラス名 sample.SampleLifecycleModule
モジュールとLifecycleListener実装クラスを含むjarファイル名 sample.jar
jarファイル配置位置 Cドライブ直下
ライフサイクルモジュールの登録名 Sample
アプリケーショングループ名 apg
プロセスグループ名 pg

5.4.1. 登録

以下の手順で登録します。なお、ここではライフサイクルモジュール名に加え、クラスパスと必須入力項目であるクラス名のみ指定しています。必要に応じて他の設定項目を入力して実行してください。

  1. 統合運用管理ツールよりドメインと接続します。
  2. ツリービューより[アプリケーション]を選択します。
  3. [操作]-[ライフサイクルモジュールの作成]を実行します。
  4. ライフサイクルモジュール名、クラスパス、クラス名を入力し、「OK」ボタンを押します。


    WebOTX AS Standard/Enterpriseにおいて、ライフサイクルモジュールをプロセスグループ上で動作させる場合は、追加で以下の作業も必要になります。

  5. ツリービューより[アプリケーション]を選択します。
  6. [操作]-[プロセスグループへのライフサイクルモジュールを追加]を実行します。
  7. 登録するライフサイクルモジュール名、アプリケーショングループ名、プロセスグループ名を入力し、「OK」ボタンを押します。

5.4.2. 登録削除

ドメインからライフサイクルモジュールを登録削除する手順を示します。WebOTX AS Standard/Enterpriseで、登録削除対象のライフサイクルモジュールをプロセスグループへも登録している場合は、先にプロセスグループからライフサイクルモジュールを登録削除する必要がある点に注意してください。

  1. ツリービューより[アプリケーション]を選択します。
  2. [操作]-[ライフサイクルモジュールの削除]を実行します。
  3. 登録削除するライフサイクルモジュール名を入力し、「OK」ボタンを押します。


次に、プロセスグループからライフサイクルモジュールを登録削除する手順を示します。

  1. ツリービューより[アプリケーション]を選択します。
  2. [操作]-[プロセスグループからのライフサイクルモジュールの削除]を実行します。
  3. 登録削除するライフサイクルモジュール名、アプリケーショングループ名、プロセスグループ名を入力し、「OK」ボタンを押します。

5.4.3. 一覧の取得

まず、ドメインに登録されたライフサイクルモジュールの一覧を取得する手順を以下に示します。

  1. ツリービューより[アプリケーション]を選択します。
  2. [操作]-[ライフサイクルモジュールの一覧]を実行します。
  3. 「OK」ボタンを押します。WebOTX AS Standard/Enterpriseの場合はアプリケーショングループ名とプロセスグループ名の入力欄が表示されますが、WebOTX AS Expressの場合は、何も入力せずに「OK」ボタンを押してください。

次に、プロセスグループに登録されたライフサイクルモジュールの一覧を取得する手順を以下に示します。こちらはWebOTX AS Standard/Enterpriseでサポートしています。

  1. ツリービューより[アプリケーション]を選択します。
  2. [操作]-[ライフサイクルモジュールの一覧]を実行します。
  3. 一覧を取得したいプロセスグループのアプリケーショングループ名、プロセスグループ名を入力し、「実行」ボタンを押します。


5.5. 運用管理コンソールによる登録・登録削除および一覧の取得

運用管理コンソールよりライフサイクルモジュールの登録・登録削除および一覧を取得する方法について説明します。なお、ここでは以下の条件でライフサイクルモジュールの登録を行っています。

ライフサイクルモジュール登録時の条件
LifecycleListener実装クラス名 sample.SampleLifecycleModule
モジュールとLifecycleListener実装クラスを含むjarファイル名 sample.jar
jarファイル配置位置 Cドライブ直下
ライフサイクルモジュールの登録名 Sample
アプリケーショングループ名 apg
プロセスグループ名 pg

5.5.1. 登録

以下の手順で登録します。なお、ここではライフサイクルモジュール名に加え、クラスパスと必須入力項目であるクラス名のみ指定しています。必要に応じて他の設定項目を入力して実行してください。

  1. 運用管理コンソールよりドメインと接続します。
  2. ツリービューより[アプリケーション]を選択します。
  3. [操作]-[ライフサイクルモジュール作成]を選択します。
  4. ライフサイクルモジュール名、クラスパス、クラス名を入力し、「実行(E)」ボタンを押します。


    WebOTX AS Standard/Enterpriseにおいて、ライフサイクルモジュールをプロセスグループ上で動作させる場合は、追加で以下の作業も必要になります。

  5. ツリービューより[アプリケーション]を選択します。
  6. [操作]-[プロセスグループへのライフサイクルモジュールを追加]を選択します。
  7. 登録するライフサイクルモジュール名、アプリケーショングループ名、プロセスグループ名を入力し、「実行(E)」ボタンを押します。

5.5.2. 登録削除

ドメインからライフサイクルモジュールを登録削除する手順を示します。WebOTX AS Standard/Enterpriseで、登録削除対象のライフサイクルモジュールをプロセスグループへも登録している場合は、先にプロセスグループからライフサイクルモジュールを登録削除する必要がある点に注意してください。

  1. ツリービューより[アプリケーション]を選択します。
  2. [操作]-[ライフサイクルモジュール削除]を選択します。
  3. 登録削除するライフサイクルモジュール名を入力し、「実行(E)」ボタンを押します。


次に、プロセスグループからライフサイクルモジュールを登録削除する手順を示します。

  1. ツリービューより[アプリケーション]を選択します。
  2. [操作]-[プロセスグループからのライフサイクルモジュールの削除]を選択します。
  3. 登録削除するライフサイクルモジュール名、アプリケーショングループ名、プロセスグループ名を入力し、「実行(E)」ボタンを押します。

5.5.3. 一覧の取得

まず、ドメインに登録されたライフサイクルモジュールの一覧を取得する手順を以下に示します。

  1. ツリービューより[アプリケーション]を選択します。
  2. [操作]-[ライフサイクルモジュールの一覧]を選択します。
  3. 「実行(E)」ボタンを押します。WebOTX AS Standard/Enterpriseの場合はアプリケーショングループ名とプロセスグループ名の入力欄が表示されますが、WebOTX AS Expressの場合は、何も入力せずに「実行(E)」ボタンを押してください。

次に、プロセスグループに登録されたライフサイクルモジュールの一覧を取得する手順を以下に示します。こちらはWebOTX AS Standard/Enterpriseでサポートしています。

  1. ツリービューより[アプリケーション]を選択します。
  2. [操作]-[ライフサイクルモジュールの一覧]を選択します。
  3. 一覧を取得したいプロセスグループのアプリケーショングループ名、プロセスグループ名を入力し、「実行(E)」ボタンを押します。


5.6. コマンドによる登録・登録削除および一覧の取得

運用管理コマンドよりライフサイクルモジュールコンポーネントの登録および登録削除する方法について説明します。なお、ここでは以下の条件でライフサイクルモジュールの登録を行っています。

ライフサイクルモジュール登録時の条件
LifecycleListener実装クラス名 sample.SampleLifecycleModule
モジュールとLifecycleListener実装クラスを含むjarファイル名 sample.jar
jarファイル配置位置 Cドライブ直下
ライフサイクルモジュールの登録名 Sample
アプリケーショングループ名 apg
プロセスグループ名 pg

5.6.1. 登録

ライフサイクルモジュールをドメインに登録するには、登録するコンポーネントとライフサイクルモジュールの初期設定情報を指定して、create-lifecycle-moduleコマンドを実行します。なお、ここではコマンドのオプションとしてclasspathと必須オプションであるclassnameのみ指定しています。必要に応じて他のオプションを指定して実行してください。

otxadmin> create-lifecycle-module -classname sample.SampleLifecycleModule -classpath C:/Sample.jar Sample

WebOTX AS Standard/Enterpriseにおいて、ライフサイクルモジュールをプロセスグループに登録するには、登録するライフサイクルモジュール名、アプリケーショングループ名、プロセスグループ名を指定して、add-pg-lifecycle-moduleコマンドを実行します。

otxadmin> add-pg-lifecycle-module -apgroup apg pgroup pg Sample

5.6.2. 登録削除

ライフサイクルモジュールをドメインから登録削除するには、登録削除するライフサイクルモジュール名を指定して、delete-lifecycle-moduleコマンドを実行します。ただし、WebOTX AS Standard/Enterpriseをお使いで、登録削除対象のライフサイクルモジュールをプロセスグループへも登録している場合は、先にプロセスグループからの登録削除を行う必要があります。

otxadmin> delete-lifecycle-module Sample

WebOTX AS Standard/Enterpriseにおいて、ライフサイクルモジュールをプロセスグループから登録削除するには、登録削除するライフサイクルモジュール名、アプリケーショングループ名、プロセスグループ名を指定して、remove-pg-lifecycle-moduleを実行します。

otxadmin> remove-pg-lifecycle-module -apgroup apg -pgroup pg Sample

5.6.3. 一覧の取得

ドメインに登録されたライフサイクルモジュールの一覧を取得するには、list-lifecycle-modulesコマンドをオプション指定なしで実行します。

otxadmin> list-lifecycle-modules

WebOTX AS Standard/Enterpriseにおいて、プロセスグループに登録されたライフサイクルモジュールの一覧を取得するには、オプションで一覧を取得したいプロセスグループのアプリケーショングループ名、プロセスグループ名を指定し、list-lifecycle-modulesコマンドを実行します。

otxadmin> list-lifecycle-modules -apgroup apg -pgroup pg

5.7. ライフサイクルモジュールの設定

ライフサイクルモジュールはJMX仕様に基づき、WebOTX AS内で管理対象オブジェクト(Managed Object: MO)として登録され、管理されます。

登録されたライフサイクルモジュールは統合運用管理ツールまたは運用管理コマンドからその設定を変更することが可能です。ただし設定の変更を反映させるには、そのライフサイクルモジュールの登録先(ドメイン又はプロセスグループ)を再起動する必要があります。

5.7.1. ライフサイクルモジュールMOの設定項目

ライフサイクルモジュールの設定項目についての一覧を以下に示します。なお、MOの詳細については [ MBean定義 ] を参照してください。また、設定方法については [ 運用管理コマンドリファレンス ] を参照してください。

ライフサイクルモジュール設定項目一覧
属性名 統合運用管理ツールでの表記 Dotted Name 説明
name 文字列 ライフサイクルモジュール名 server.applications.lifecycle-module.ライフサイクルモジュール名.name ライフサイクルモジュール名です。ここで指定した名前でライフサイクルモジュールをドメインに登録します。ただし、文字列にスペースを混入させることはできません。
class-name 文字列 ライフサイクルモジュールクラス名 server.applications.lifecycle-module.ライフサイクルモジュール名.class-name LifecycleListener実装クラスのクラス名を、パッケージ名を含めて指定します。
classpath 文字列 クラスパス server.applications.lifecycle-module.ライフサイクルモジュール名.classpath ライフサイクルモジュールとして登録するコンポーネントのクラスパスです。クラスパスを複数指定する場合は各パスをWindows OSでは「;」、UNIX系OSでは「:」で区切ってください。また、クラスパスの通っているフォルダ/ディレクトリに格納する場合はクラスパスの指定は不要になります。(例. <INSTANCE_ROOT>/libなど)
load-order 数値 サービス実行順番 server.applications.lifecycle-module.ライフサイクルモジュール名.load-order サーバ起動時に、この起動順序番号に従って各モジュールが順次起動されます。既定ではドメインに登録された順序に従って起動されます。ライフサイクルモジュールの起動順序に依存関係がある場合はこの値を指定する必要があります。
is-failure-fatal true/false サービス起動失敗時動作 server.applications.lifecycle-module.ライフサイクルモジュール名.is-failure-fatal 既定値falseを選択するとドメイン起動時にライフサイクルモジュールの起動処理に失敗した場合でもその起動処理を継続します。trueを選択すると、ライフサイクルモジュールの起動処理に失敗した場合にドメイン(またはプロセスグループ)を停止することができます。詳細は後述の「is-failure-fatalの設定効果について」をご覧ください。
enabled true/false サービス起動設定 server.applications.lifecycle-module.ライフサイクルモジュール名.enabled ライフサイクルモジュールの有効の可否を決定します。
description 文字列 説明 server.applications.lifecycle-module.ライフサイクルモジュール名.description 登録したライフサイクルモジュールに関する説明書き欄です。
property 文字列 (以下で解説) server.applications.lifecycle-module.ライフサイクルモジュール名.property.プロパティ名 ユーザにより定義可能なライフサイクルモジュールの任意のプロパティです。「プロパティ名=値」の形式で指定してください。運用管理コマンドから複数指定する場合はプロパティの組を「:」で繋げてください。

属性propertyはライフサイクルモジュールの「一般」タグ内には表示されません。統合運用管理ツールからpropertyを取得・設定するにはツール上のライフサイクルモジュールの右クリックから「プロパティ一覧の取得」または「プロパティの設定」を実行してください。


運用管理コンソールの場合、左側のツリービューより作成したライフサイクルモジュールを選択し、「操作」リストの下の「プロパティ一覧の取得」または「プロパティの設定」を選択してください。


なお、コマンドからpropertyを取得・設定するにはその他の設定項目同様にget・setコマンドを使用してください。

※is-failure-fatalの設定効果について

ライフサイクルモジュールの設定項目is-failure-fatalをtrueに設定する場合は、同時に次の設定を行ってください。

・ドメインを停止する場合(ドメインに登録されたライフサイクルモジュールに設定が適用されます)

otxadmin> set server.internal-lifecycle-module.LifecycleModuleService.is-failure-fatal=true

・プロセスグループを停止する場合(プロセスグループに登録されたライフサイクルモジュールに設定が適用されます)

otxadmin> set サーバ名.internal-lifecycle-module.LifecycleModuleService.is-failure-fatal=true
Memo
サーバ名は、アプリケーショングループ名とプロセスグループ名を-(ハイフン)でつないだものです。

また、登録されているライフサイクルモジュールが複数ある場合は、そのライフサイクルモジュールのいずれかの起動が失敗すると、その起動順序によっては他のライフサイクルモジュールの起動処理がスキップされることがあります。 この時、各ライフサイクルモジュールの初期化が正常に行われなくなることがあります。例えば、ライフサイクルモジュール間に依存関係があり、登録した全てのライフサイクルモジュールが正常に起動することが前提条件にある場合は、上記の設定を行うことを推奨します。

5.7.2. 各プロセス上での有効・無効設定

WebOTX ASでは複数プロセスグループ上でライフサイクルモジュールの機能を提供するため、各プロセスグループ上からはドメインに登録されたライフサイクルモジュールの情報を参照し、設定情報を取得しています。したがって、ドメインに登録された情報への参照の有効・無効を設定することで、プロセスグループごとにライフサイクルモジュールの有効・無効を設定することができます。

以下の図はドメイン上のライフサイクルモジュールの情報を各プロセスグループから参照する場合のイメージです。ただし、ここでは各プロセスグループを表すのにアプリケーショングループ名とプロセスグループ名を-(ハイフン)でつないだサーバ名で表しています。


参照の有効・無効設定を行うには、運用管理コマンドから以下の手順で変更します。

otxadmin> set サーバ名.application-ref.ライフサイクルモジュール名.enabled=true

または

otxadmin> set サーバ名.application-ref.ライフサイクルモジュール名.enabled=false