WebOTX運用編(アプリケーション配備)

1 はじめに

本書はWebOTX実行環境を運用するための運用操作法について概要や具体的な設定項目や設定方法について記載しています。

1.1 対象読者

このマニュアルはWebOTX Application Server Web Edition、Standard-J Edition、Standard Edition、Enterprise Editionを使って運用環境を構築するシステムエンジニア、日々の運用を行うオペレータを対象としています。

1.2 表記について

1.2.1 パス名表記

本書ではパス名の表記については特にOSを限定しない限りセパレータはスラッシュ’/’で統一しています。Windows環境においては’\’に置き換えてください。

1.2.2 環境変数表記

インストールディレクトリやドメインルートディレクトリなど環境によって値の異なるものについては環境変数を用いて表します。

${env} または $(env)で表しています。

1.2.3 コマンド操作について

本書中では運用操作に用いるコマンドの詳細についての説明は省略しています。

コマンドの詳細は「運用管理コマンド」、「運用管理コマンドリファレンス」を参照してください。

2 概要

2.1 アプリケーションの種類

WebOTX Application Serverは以下に示す8種類のアプリケーションをサポートします。サポートするアプリケーションの種類はWebOTX Application Serverのエディションにより異なります。アプリケーションは種類ごとにアーカイブの形式や拡張子が仕様で定められています。

Webアプリケーション アーカイブ (Java EE)
WebアプリケーションアーカイブはWebアプリケーションのためのコンテンツを格納します。静的なHTMLを提供するだけでなく、サーブレットやJSPを利用して動的にコンテンツを生成することもできます。Web アプリケーションアーカイブのファイル名の拡張子は「.war」です。WebOTX Application Server Web Editionは、Webアプリケーションアーカイブのみサポートします。
EJB JAR (Java EE)
EJB JARにはEJB (Enterprise JavaBeans)を格納します。またEJBが利用するユーティリティクラスを含めることもできます。EJB JARのファイル名の拡張子は「.jar」です。
Java EEアプリケーションクライアント (Java EE)
Java EEアプリケーションクライアントはクライアント コンテナ上で動作するアプリケーションです。Java EE アプリケーション クライアントはRMI-IIOP経由でEJB等のサーバ サイド アプリケーションにアクセスします。Java EEアプリケーション クライアントのファイル名の拡張子は「.jar」です。
リソースアダプタアーカイブ (Java EE)
リソースアダプタアーカイブにはリソースアダプタを格納します。リソースアダプタとは、EJBやWebアプリケーションが外部のエンタープライズシステムにアクセスできるようにするためのコンポーネントです。リソース アダプタ アーカイブのファイル名の拡張子は「.rar」です。
SIPアプリケーション (Java EE)
SIPと呼ばれる通信制御プロトコルに特化したアプリケーションです。SIPアプリケーションのファイル名の拡張子は「.sar」です。SIPサーブレットはWebOTX SIP Application Serverだけがサポートします。
エンタープライズアプリケーションアーカイブ(Java EE)
エンタープライズアプリケーション アーカイブは、上記のJava EEのアプリケーションを1つ以上格納した統合アプリケーションです。エンタープライズアプリケーション アーカイブのファイル名の拡張子は「.ear」です。
CORBAアプリケーション
OMGが標準化を行っているCORBAという仕様に準拠したアプリケーションです。Javaだけではなく、C/C++やCOBOLで実装することもできます。CORBAアプリケーションの形式にはR5形式とR4形式が存在します(「アプリケーション開発ガイド」参照)。CORBAアプリケーションのファイル名の拡張子は「.cpk」です。CORBAアプリケーションはStandard EditionとEnterprise Editionでサポートしています。
共有コンポーネント
プロセスグループ間で共有するライブラリです。共有コンポーネントのファイル名の拡張子は「.spk」です。共有コンポーネントはStandard EditionとEnterprise Editionでサポートしています。

Java EEのアプリケーションを提供する場合、1つのEARでアプリケーションを組み立てることもできますし、また個別にWARやEJB JARなどを配備してアプリケーションを組み立てても構いません。さらには各アプリケーションを異なるサーバ上に配備することでアプリケーションを分散することができます。

2.2 アプリケーションに対する運用操作

作成したアプリケーションをWebOTX Application Server上で実行する場合、アプリケーションに対して次に示す運用操作を行います。

パッケージング
開発したアプリケーションを、各アプリケーションが準拠している仕様に基づきアーカイブします。
配備
作成したアプリケーションをWebOTXの管理下におく作業です。アプリケーションを配備するためには、ドメインが起動している必要があります。配備するアプリケーションは、あらかじめearやwar等の形式でパッケージ化しておきます。
開始と停止
デフォルトでは配備後のアプリケーションは開始した状態にあります。開始した状態とは、配備されたアプリケーションが動作しており、クライアントからの要求を受け付けることができる状態です。また、停止した状態とは、アプリケーションが動作していない状態のことで、クライアントからの要求は受け付けることができません。停止した状態のアプリケーションは依然としてWebOTXの管理下にあります。簡単な運用操作によって、アプリケーションの開始状態と停止状態を切り替えることができます。
再配備
配備済みのアプリケーションを置換する作業を再配備と呼びます。再配備はアプリケーションの開発時に頻繁に行われる作業です。
配備解除
アプリケーションをWebOTXの管理下から除外する作業です。

3 アプリケーションの動作プロセス

WebOTX Application Serverに配備するアプリケーションは、エディションにより動作するプロセスが異なります。この章では、配備の観点からアプリケーションが動作するプロセスについての解説を行います。

3.1 配備先の種類

アプリケーションが動作するプロセスは大きく分けて「エージェントプロセス」と「プロセスグループ」の二種類存在します。この節では、これらの違いについて解説します。

3.1.1 エージェントプロセス

エージェントプロセスとは、WebOTX Application Serverが動作している、コアとなるプロセスのことです。Web EditionとStandard-J EditionとWebOTX SIP Application Server Standard Editionでは、配備したアプリケーションは全てエージェントプロセス上で動作します。これらのエディションでは、配備時には配備先の指定は必要ありません。

3.1.2 アプリケーショングループとプロセスグループ

Standard EditionとEnterprise Editionでは、配備したアプリケーションはWebOTX Application Serverのコアのプロセスから分離された個別のプロセス上で動作します。このプロセスは多重化することができ、多重化したプロセス群のことを「プロセスグループ」と呼んでいます。

プロセスグループは、更に業務単位にまとめることができます。業務単位でまとめたプロセスグループ群を「アプリケーショングループ」と呼びます。

Standard EditionとEnterprise Editionで以下のアプリケーションを配備する際には、どのアプリケーショングループおよびプロセスグループに対しての配備なのかを指定する必要があります。

3.2 アプリケーショングループとプロセスグループの作成方法

この節では、各ツールを使ってアプリケーショングループとプロセスグループを作成する方法を説明します。

3.2.1 コマンドを利用した作成方法

運用管理コマンドを利用してアプリケーショングループとプロセスグループを作成する手順を説明します。なお運用管理コマンドの詳細については、運用管理コマンドリファレンスマニュアルの「create-apg」、「create-pg」を参照してください。

プロセスグループを作成する前に、それが属するアプリケーショングループを作成する必要があります。アプリケーショングループを作成するには、次に示すオペレーションcreate-apgを実行します。

otxadmin> create-apg APG名

具体例を挙げると、「myapg」という名前のアプリケーショングループを作成するには、次のようにします。

otxadmin> create-apg myapg

次にプロセスグループを作成します。プロセスグループを作成するには、次に示すオペレーションcreate-pgを実行します。

otxadmin> create-pg --apgroup 所属APG名 --kind 種別 --version [バージョン] PG名

具体例を挙げると、「javaeepg」という名前の、「myapg」というアプリケーショングループに属するJava EE用のプロセスグループを作成するには、次のようにします。

otxadmin> create-pg --apgroup myapg --kind javaee --version 7 javaeepg

別の例を挙げると、「corba」という名前の、「yourapg」というアプリケーショングループに属する、Visual C++ 2005で実装したCORBAアプリケーションのためのプロセスグループを作成するには、次のようにします。

otxadmin> create-pg --apgroup yourapg --kind vc2005 --version 7 corba

3.2.2 統合運用管理ツールを利用した作成方法

統合運用管理ツールを利用して、アプリケーショングループとプロセスグループを作成する手順を説明します。

  1. 統合運用管理ツールでWebOTX Application Serverに接続します。画面右側のツリーの「アプリケーショングループ」を選択し、右クリックします。表示されたメニューから「アプリケーショングループの新規作成」を選択します。
  2. アプリケーショングループを作成するためのダイアログに必要な情報を入力します。「アプリケーショングループ」に作成するアプリケーショングループの名前を入力し、「実行」ボタンを押下します。
  3. アプリケーショングループの作成に成功すると、以下のように「アプリケーショングループ」の下に作成したアプリケーショングループが現れます。
  4. 次にプロセスグループを作成します。作成したアプリケーショングループの下の「プロセスグループ」を選択し、右クリックします。表示されたメニューから「プロセスグループの新規作成」を選択します。
  5. プロセスグループを作成するためのダイアログに必要な情報を入力します。「プロセスグループ」に作成するプロセスグループ名を入力します。また「WebOTX ASバージョン」と「モジュールの種類」を適切に設定してください。必要な情報の入力の後、「実行」ボタンを押下します。
  6. プロセスグループの作成に成功すると、以下のように「プロセスグループ」の下に作成したプロセスグループグループが現れます。

4 パッケージング

作成したアプリケーションを配備する前に、アプリケーションを配備可能な形式にパッケージングします。アーカイブ内のディレクトリ構造やファイルの配置方法は、アプリケーションの種類ごとに定められています。この章では、アプリケーションのアーカイブの方法について解説します。

4.1 Java EEのアプリケーションのパッケージング

WebアプリケーションアーカイブやEJB JARなどのJava EEのアプリケーションを配備する際には、標準仕様(JSR)に準拠した形式でパッケージングを行う必要があります。パッケージングの形式が標準化されているため、ポータビリティの高いアプリケーションの作成が可能になっています。WebOTX Developerでプロジェクトを作成することにより、パッケージングを自動化することができます。

4.2 CORBAアプリケーションのパッケージング

Java EEの場合とは異なり、CORBAアプリケーションにはパッケージングに関する標準仕様はありません。ここで示すCORBAのパッケージングはWebOTX Application Serverに固有の形式です。

CORBAアプリケーションをパッケージングするためには、最低限次の2つのファイルが必要です。

また、必要であれば次のファイルを準備してください。

プロパティ 説明
component.initfunc コンポーネント初期化ファイル名を指定します。
component.id コンポーネントIDを指定します。
component.useshareif 共有コンポーネントのifファイルを利用する場合trueを利用しない場合falseを指定します(既定値:false)。
component.shareif 共有コンポーネントのifファイルを利用する場合そのifファイル名を指定します。
component.sharedComponentList 利用する共有コンポーネントのアプリケーション名を記述します。複数ある場合はカンマ「,」で区切ります。
sharedcomponent.allModuleUse 共有コンポーネントを全てのアプリケーションから利用できるようにします。

なお、統合運用管理ツールにはパッケージングされていないCORBAアプリケーションを配備する機能がありますので、CORBAアプリケーションのパッケージングは必須ではありません。

4.2.1 CORBAアプリケーションの形式

CORBAアプリケーションの形式にはR5形式とR4形式があります。CORBAアプリケーションの形式についての詳細は、「アプリケーション開発ガイド 7.1 WebOTX AS CORBAアプリケーション」を参照してください。

4.2.2 コマンドを利用したパッケージング

コマンドラインからCORBAアプリケーションをパッケージングするにはmakecpkコマンドを利用します。makecpkの詳細なリファレンスについては運用管理コマンドリファレンスマニュアルの「makecpk」を参照してください。

例1: 既定値でCORBAアプリケーションをパッケージング
> makecpk corbaap.cpk module=corbaap.jar if=corbaap.if
例2: プロパティファイルを指定してのCORBAアプリケーションをパッケージング
> makecpk corbaap.cpk module=corbaap.jar if=corbaap.if prop=corbaap.properties
例3: オプションを指定してのCORBAアプリケーションのパッケージング
> makecpk corbaap.cpk module=corbaap.jar if=shareap.if id=AA initfunc=corbaap.create useshareif=true

4.3 共有コンポーネントのパッケージング

共有コンポーネントはWebOTX Application Server固有のコンポーネントです。共有コンポーネントをパッケージングするためには、最低限次のファイルが必要です。

また共有コンポーネントがCORBAインタフェースを持つ場合、次のファイルも準備してください。

なお、統合運用管理ツールにはパッケージングされていない共有コンポーネントを配備する機能がありますので、共有コンポーネントのパッケージングは必須ではありません。

4.3.1 コマンドを利用したパッケージング

コマンドラインから共有コンポーネントをパッケージングするにはmakecpkコマンドを利用します。makecpkの詳細なリファレンスについては運用管理コマンドリファレンスマニュアルの「makecpk」を参照してください。

例1: 共有コンポーネントのパッケージング
> makecpk shareap.spk module=shareap.jar
例2: CORBAインタフェースを持つ共有コンポーネントのパッケージング
> makecpk shareap.spk module=shareap.jar if=shareap.if

5 配備と再配備

配備とは、作成したアプリケーションをWebOTX Application Serverの管理下におく作業です。また再配備とは、WebOTX Application Serverの管理下にあるアプリケーションを、新しいアプリケーションで置換することです。この章では、配備および再配備について解説します。

5.1 アプリケーション名の規約

WebOTX Application Serverがアプリケーションを管理するために、配備の際にはアプリケーションに名前をつける必要があります。アプリケーションの名前は、WebOTX Application Serverのドメイン内で一意でなければなりません。

アプリケーション名は、デフォルトではアーカイブのファイル名から拡張子を取り除いたものになります。例えば、アーカイブのファイル名が「sample.war」の場合、「sample」というアプリケーション名でWebOTX Application Serverに配備されます。また、配備をサポートする各ツールは、アプリケーション名を明示的に指定する方法を提供しています。

5.2 アプリケーショングループとプロセスグループ

3.1.2 アプリケーショングループとプロセスグループで示したとおり、Standard EditionおよびEnterprise Editionでは、配備の際にアプリケーショングループとプロセスグループの指定が必要な場合があります。

再配備時には、アプリケーショングループとプロセスグループの指定があっても、それらは無視されます。新しいアプリケーションは、古いアプリケーションが配備されていたアプリケーショングループおよびプロセスグループに配備されます。

5.3 Java EEのアプリケーションの配備/再配備

この節では、Java EEのアプリケーションの配備/再配備について説明します。特に断りがない限り、説明はJava EEのアプリケーションの種類すべてに共通しているものとします。

5.3.1 コマンドを利用した配備 (deploy)

運用管理コマンドのdeployオペレーションを利用してJava EEのアプリケーションを配備/再配備する方法について説明します。なお、運用管理コマンドの詳細については運用管理コマンドリファレンスマニュアルの「deploy」を参照してください。

配備するには、Java EEのアプリケーションのアーカイブを指定してオペレーションdeployを実行します。再配備するには、更に--forceオプションを付加します。またStandard EditionおよびEnterprise Editionの場合は、配備先のアプリケーショングループ名とプロセスグループ名も必要となる場合があります。

otxadmin> deploy [--apgroup APG名] [--pgroup PG名] アーカイブ名
otxadmin> deploy [--apgroup APG名] [--pgroup PG名] --force アーカイブ名

具体例を挙げると、Web Editionにおいてアーカイブ名が「hello.war」であるWebアプリケーションを配備し、その後再配備するには、次のようにします。

otxadmin> deploy hello.war
otxadmin> deploy --force hello.war

別の例を挙げると、Enterprise Editionにおいてアーカイブ名が「sample.jar」であるEJB JARを配備し、その後再配備するには、次のようにします。配備先のアプリケーショングループ名をapgで、プロセスグループ名をpgとしています。

otxadmin> deploy --apgroup apg --pgroup pg sample.jar
otxadmin> deploy --force sample.jar

5.3.2 コマンドを利用した配備 (deploydir)

運用管理コマンドのオペレーションdeploydirを利用してJava EEのアプリケーションを配備/再配備する方法について説明します。なお、運用管理コマンドの詳細については運用管理コマンドリファレンスマニュアルの「deploydir」を参照してください。

通常の配備では、アプリケーションをパッケージングし、そのアーカイブを配備します。オペレーションdeploydirを利用すると、パッケージング前のディレクトリ構造そのものを配備することができます。

配備するには、Java EEのアプリケーションが格納されているディレクトリのフルパスを指定してオペレーションdeploydirを実行します。配備対象のディレクトリのフルパスは、WebOTX Application Serverが動作しているホストにおけるフルパスです。アプリケーションをクライアントマシンからサーバマシンへ転送する機能はありません。再配備するには、更に--forceオプションを付加します。またStandard EditionおよびEnterprise Editionの場合は、配備先のアプリケーショングループ名とプロセスグループ名も必要となる場合があります。

otxadmin> deploydir [--apgroup APG名] [--pgroup PG名] ディレクトリのフルパス
otxadmin> deploydir [--apgroup APG名] [--pgroup PG名] --force ディレクトリのフルパス

具体例を挙げると、Web Editionにおいてアプリケーションのディレクトリのフルパスが「C:\hello」であるWebアプリケーションアーカイブを配備し、その後再配備するには、次のようにします。

otxadmin> deploydir C:\hello
otxadmin> deploydir --force C:\hello

別の例を挙げると、Enterprise Editionにおいて、サーバ上でのディレクトリのフルパスが「C:\sample」であるWebアプリケーションを配備し、その後再配備するには次のようにします。配備先のアプリケーショングループ名をapgで、プロセスグループ名をpgとしています。

otxadmin> deploydir --apgroup apg --pgroup pg C:\sample
otxadmin> deploydir --force C:\sample

オペレーションdeploydirは、システムの開発効率を上げるために提供しています。そのため本番環境ではdeploydirは利用せずに、deployを利用してください。オペレーションdeploydirは配備するディレクトリの内容を書き換えるため、配備するディレクトリのバックアップを取ってから実行してください。

deploydirでは、JARファイルが解体された状態のディレクトリ配下の中にある配備記述子XMLファイルを直接変更できます。「オートデプロイ」の項で説明した構成情報ファイル「domain.xml」の同じ「das-config」要素内の中にある下記のダイナミックリロードに関する属性が有効になっていると、サーバは自動的に変更を検知し、アプリケーションを再ロードします。

属性 既定値 説明
dynamic-reload-enabled false trueの場合、「.reload」ファイルのタイムスタンプをチェックし、更新されていればアプリケーションを読み込みなおします。
dynamic-reload-poll-interval-in-seconds 2 ダイナミックリロードのポーリング間隔を指定します。単位は秒です。

「dynamic-reload-enabled」の設定を「true」に変更します。WebOTXに更新を知らせるために次の操作を行います。

5.3.3 統合運用管理ツールを利用した配備

統合運用管理ツールを利用して、Java EEのアプリケーションを配備する手順を説明します。

  1. 統合運用管理ツールを起動し、ドメインに接続します。そして画面右側のツリーの「アプリケーション」を選択し、右クリックします。表示されたメニューから「コンポーネントの配備」を選択します。
  2. コンポーネントタイプを適切に選択してください。この例では「EJBコンポーネント」を選択しています。また配備するアーカイブのパスを「ファイル」に記述します。「参照」ボタンを押下することでダイアログからパスを選択できます。入力が完了したら「次へ(N)」ボタンを押下します。
  3. Standard EditionおよびEnterprise Editionの場合は、配備先のアプリケーショングループとプロセスグループ指定します。そして「配備(D)」ボタンを押下します。
  4. 配備実行の確認のダイアログが表示されますので「はい(Y)」ボタンを押下してください。
  5. 配備の進行状況が表示された後、終了を示すダイアログが表示されます。
  6. 正常終了した場合、画面右側のツリーにアプリケーション名が表示されます。以下の画面の例では、「EJBコンポーネント」の子要素として「sample」というアプリケーションが追加されています。アプリケーションがどの要素の子要素になるのかは、アプリケーションの種類によって異なります。さらに、Standard EditionおよびEnterprise Editionでは、「WebOTXJava EEアプリケーション」の子要素としても追加されます。

5.3.4 オートデプロイ機能を利用した配備

オートデプロイ機能とは、アプリケーションのアーカイブファイルを次のディレクトリにコピーすることで自動的に配備を行う機能です。

${INSTANCE_ROOT}/autodeploy

例えばWindowsでドメインdomain1を利用している場合、「hello.war」というファイル名のアプリケーションをC:\WebOTX\domains\domain1\autodeployにコピーするだけで、自動で配備を実行できます。

配備に成功した場合には、ディレクトリautodeployに、[アーカイブファイル名]_deployedというファイルが作成されます。また配備に失敗した場合は、[アーカイブファイル名]_deployFailedというファイルが作成されます。これらのファイルの存在を確認することで、配備が正常に終了したかどうかを調べることができます。

再配備を行う場合は、再配備するアーカイブをディレクトリautodeployに上書きでコピーしてください。上書きするアーカイブのタイムスタンプは、上書きされるアーカイブのタイムスタンプよりも新しいものである必要があります。古いタイムスタンプのアーカイブで上書きした場合、配備処理は実行されません。

Standard EditionおよびEnterprise Editionでは、配備時にアプリケーショングループとプロセスグループを指定する必要があります。オートデプロイ機能で配備先のアプリケーショングループとプロセスグループを指定するには、ディレクトリautodeployに、プロパティファイルautodeploy.iniを作成し、内容を適切に設定してください。プロパティファイルautodeploy.iniは、java.util.Propertiesが読み込める形式でなければいけません。プロパティファイルautodeploy.iniはドメイン起動時に読み込まれ、その後変更するたびに再読み込みされます。プロパティファイルautodeploy.iniに記述するプロパティの詳細を以下に示します。

キー 値の説明
apg 登録先アプリケーショングループ名。
pg 登録先プロセスグループ名。

オートデプロイ機能の各種設定は、${INSTANCE_ROOT}/config/domain.xmlに記述してあります。このdomain.xmlファイルの要素<das-config>の属性の値を編集することで、設定を変更することができます。domain.xmlの編集はドメインを停止してから行ってください。属性の詳細は以下の通りです。

属性 既定値 説明
autodeploy-enabled false trueの場合、オートデプロイ機能が有効になります。falseの場合は、オートデプロイ機能は無効になり、動作しません。
autodeploy-poll-interval-in-seconds 2 オートデプロイのためのディレクトリを監視する間隔(ポーリング間隔)です。単位は秒です。
autodeploy-dir autodeploy オートデプロイのためのディレクトリを設定します。このディレクトリは、絶対パスかドメインのディレクトリからの相対パスです。
autodeploy-verifier-enabled false trueの場合、配備を実行する前に、配備記述子の妥当性検証(ベリファイ)を行います。妥当性検証に失敗した場合は、配備は実行しません。falseの場合は、妥当性検証は実行しません。

[注意]
この機能はサポートしていません。既定値(false)から変更しないでください。trueに設定するとアプリケーションに問題が無くてもオートデプロイに失敗します。WebOTX SIP Application Server V8.13ではtrueに設定してもオートデプロイ前の妥当性検証は実行されません。
autodeploy-jsp-precompilation-enabled false trueの場合、配備中にJSPをコンパイルします。falseの場合、JSPのコンパイルは行いません。この場合はJSPの初回アクセス時に動的にコンパイルを実行します。

5.4 CORBAアプリケーションの配備

ここではCORBAアプリケーションの配備について説明します。Standard EditionおよびEnterprise EditionがCORBAアプリケーションをサポートしています。

5.4.1 動的配備と静的配備

CORBAアプリケーションの形式がR4形式なのかR5形式なのかによって、配備を行うための条件が異なります。アプリケーショングループが起動状態で配備を行うことを、動的配備と呼びます。アプリケーショングループが停止状態で配備を行うことを、静的配備と呼びます。

R4形式のCORBAアプリケーションの場合、静的配備のみをサポートします。配備を行うにはそのCORBAアプリケーションが属しているアプリケーショングループを停止してください。アプリケーショングループが起動している場合は配備できません。

R5形式のCORBAアプリケーションの場合は、動的配備も静的配備もサポートしています。ただし、動的配備を行う場合は以下の条件を満たす必要があります。

バージョン5のプロセスグループは動的配備をサポートしていませんので、アプリケーショングループを停止して静的配備を行ってください。

5.4.2 動的再配備と静的再配備

CORBAアプリケーションの形式がR4形式なのかR5形式なのかによって、再配備を行うための条件が異なります。アプリケーショングループが起動状態で再配備を行うことを、動的再配備と呼びます。アプリケーショングループが停止状態で再配備を行うことを、静的再配備と呼びます。

R4形式のCORBAアプリケーションの場合、静的再配備のみをサポートします。再配備を行うにはそのCORBAアプリケーションが属しているアプリケーショングループを停止してください。アプリケーショングループが起動している場合は再配備できません。

R5形式のCORBAアプリケーションの場合は、動的再配備も静的再配備もサポートしています。ただし、動的再配備を行う場合は以下の条件を満たす必要があります。

バージョン5のプロセスグループは動的再配備をサポートしていませんので、アプリケーショングループを停止して静的再配備を行ってください。またCORBAアプリケーションが停止状態でない場合は、再配備ができません。CORBAアプリケーションを停止状態にすることで、再配備を行うことができます。CORBAアプリケーションを停止する際、実行中のオペレーションがエラーとなる可能性があります。

5.4.3 業務の停止を伴わないアプリケーションの置換

動的配備と動的配備解除を利用することにより、業務を停止せずにアプリケーションを置換することができます。手順を以下に示します。

  1. 新しいアプリケーションを作成する際に、モジュール名を古いアプリケーションと異なるものにします。これにより新旧アプリケーションを同時に配備することができるようになります。
  2. 新しいアプリケーションを古いアプリケーションとは異なるアプリケーション名で動的配備します。これにより新旧アプリケーションが同時に起動している状態になります。
  3. 名前サーバの登録情報を、新しいアプリケーションの情報で上書きします。これにより新規に接続するクライアントは新しいアプリケーションを参照するようになります。
  4. 古いアプリケーションを動的配備解除します。詳細は6.2.1 動的配備解除と静的配備解除を参照してください。

5.4.4 ファクトリインタフェースのオペレーション

WebOTX V6.5より、オペレーション数削減のために、業務実行において不要なCORBAオペレーションを表示しないようにしています。具体的には、R4形式で作成されたCORBAアプリケーションにおける、自動生成されたファクトリインタフェースのオペレーションのうち、CreateServerObject2とReleaseServerObject2の登録を行わないようにしています。これらは開発環境のIDLコンパイラ(woigenxx, woigenj)で作成したときに自動付加されます。WebOTX V6.4以前と同じように表示させたい場合は、以下の方法でドメインのJava VMオプションにシステムプロパティを設定してから配備しなおす必要があります。

設定するシステムプロパティは以下の通りです。

プロパティ
com.nec.webotx.analyzeFactory true/false (既定値:false CreateServerObject2, ReleaseServerObject2を表示しない)

システムプロパティをJava VMオプションに追加します。設定手順は以下の通りです。

5.4.5 コマンドを利用した配備

運用管理コマンドを利用してCORBAアプリケーションを配備/再配備する方法について説明します。なお、運用管理コマンドの詳細については運用管理コマンドリファレンスマニュアルの「deploy」を参照してください。

配備するには、CORBAアプリケーションのアーカイブを指定してdeployオペレーションを実行します。deployオペレーションを実行する際には、配備先のアプリケーショングループ名とプロセスグループ名も指定する必要があります。再配備するには、更に--forceオプションを付加します。

otxadmin> deploy --apgroup APG名 --pgroup PG名 アーカイブ名
otxadmin> deploy --apgroup APG名 --pgroup PG名 --force アーカイブ名

例えば、アーカイブ名が「corba.cpk」であるCORBAアプリケーションを配備し、その後再配備するには、次のようにします。配備先のアプリケーショングループ名をapgで、プロセスグループ名をpgとしています。

otxadmin> deploy --apgroup apg --pgroup pg corba.cpk
otxadmin> deploy --apgroup apg --pgroup pg --force corba.cpk

5.4.6 統合運用管理ツールを利用した配備

統合運用管理ツールを利用して、CORBAアプリケーションを配備する手順を説明します。

  1. 統合運用管理ツールの画面右側のツリーの「アプリケーション」を選択し、右クリックします。表示されたメニューから「コンポーネントの配備」を選択します。
  2. 「コンポーネントタイプ」を「CORBAアプリケーション」に設定します。また「ファイル」に配備するCORBAアプリケーションのアーカイブ(.cpk)を設定します。入力が完了したら、「次へ(N)」ボタンを押下します。
  3. 「アプリケーショングループ」と「プロセスグループ」を適切に設定してください。また再配備を行う場合は、「強制(再)配備」にチェックを入れてください。入力が完了したら「配備(D)」ボタンを押下してください。
  4. 配備実行の確認画面が出てきますので、「はい(Y)」ボタンを押下してください。
  5. 配備が正常に完了すると、以下の画面のように、画面右側のツリーの「CORBAアプリケーション」の下に配備したアプリケーション名が表示されます。

5.5 共有コンポーネントの配備

ここでは、共有コンポーネントの配備について説明します。Standard EditionおよびEnterprise Editionが共有コンポーネントをサポートしています。

5.5.1 コマンドを利用した配備

運用管理コマンドを利用して共有コンポーネントを配備/再配備する方法について説明します。なお、運用管理コマンドの詳細については運用管理コマンドリファレンスマニュアルの「deploy」を参照してください。

配備する場合は、共有コンポーネントのアーカイブを指定してdeployオペレーションを実行します。再配備するには、更に--forceオプションを付加します。

otxadmin> deploy アーカイブ名
otxadmin> deploy --force アーカイブ名

具体例を挙げると、アーカイブ名が「shared.spk」である共有コンポーネントを配備し、その後再配備するには、次のようにします。

otxadmin> deploy shared.spk
otxadmin> deploy --force shared.spk

5.5.2 統合運用管理ツールを利用した配備

統合運用管理ツールを利用して、共有コンポーネントを配備する手順を説明します。

  1. 統合運用管理ツールの画面右側のツリーの「アプリケーション」を選択し、右クリックします。表示されたメニューから「コンポーネントの配備」を選択します。
  2. 「コンポーネントタイプ」を「共有コンポーネント」に設定します。また「ファイル」に配備する共有コンポーネントのアーカイブ(.cpk)を設定します。入力が完了したら、「次へ(N)」ボタンを押下します。
  3. 再配備を行う場合は、「強制(再)配備」にチェックを入れてください。入力が完了したら「配備(D)」ボタンを押下してください。
  4. 配備実行の確認画面が出てきますので、「はい(Y)」ボタンを押下してください。
  5. 配備が正常に完了すると、以下の画面のように、画面右側のツリーの「共有コンポーネント」の下に配備したアプリケーション名が表示されます。

5.6 注意事項

6 配備解除

配備解除とは、WebOTX Application Serverの管理下からアプリケーションを除外することです。この章では配備解除について解説します。

6.1 Java EEのアプリケーションの配備解除

この節では、Java EEのアプリケーションの配備解除について説明します。特に断りがない限り、説明はJava EEのアプリケーションの種類すべてに共通しているものとします。

6.1.1 コマンドを利用した配備解除

運用管理コマンドを利用してJava EEのアプリケーションを配備解除する方法について説明します。なお、運用管理コマンドの詳細については運用管理コマンドリファレンスマニュアルの「undeploy」を参照ください。

配備解除するには、アプリケーション名を指定してundeployオペレーションを実行します。

otxadmin> undeploy アプリケーション名

具体例を挙げると、アプリケーション名が「hello」であるアプリケーションを配備解除するには、次のようにします。

otxadmin> undeploy hello

6.1.2 統合運用管理ツールを利用した配備解除

統合運用管理ツールを利用して、Java EEのアプリケーションを配備解除する手順を説明します。

  1. 統合運用管理ツールを起動し、ドメインに接続します。そして画面右側のツリーから配備解除するアプリケーションを選択し、右クリックします。表示されたメニューから「配備解除」を選択します。
  2. 配備解除のオプションを選択するダイアログが表示されますので、必要な情報を設定して、「OK」ボタンを押下します。
  3. 配備解除に成功すると、以下のような画面が表示されます。

6.1.3 オートデプロイ機能による配備解除

オートデプロイ機能での配備で利用した以下のディレクトリから、該当アーカイブを削除することで、自動的に配備解除が開始します。

${INSTANCE_ROOT}/autodeploy

6.2 CORBAアプリケーションの配備解除

ここではCORBAアプリケーションの配備解除について説明します。

6.2.1 動的配備解除と静的配備解除

CORBAアプリケーションの形式がR4形式なのかR5形式なのかによって、配備解除を行うための条件が異なります。アプリケーショングループが起動状態で配備解除を行うことを、動的配備解除と呼びます。アプリケーショングループが停止状態で配備解除を行うことを、静的配備解除と呼びます。

R4形式のCORBAアプリケーションの場合、静的配備解除のみをサポートします。配備解除を行うにはそのCORBAアプリケーションが属しているアプリケーショングループを停止してください。アプリケーショングループが起動している場合は配備解除できません。

R5形式のCORBAアプリケーションの場合は、動的配備解除も静的配備解除もサポートしています。ただし、動的配備解除を行う場合は以下の条件を満たす必要があります。

バージョン5のプロセスグループは動的配備解除をサポートしていませんので、アプリケーショングループを停止して静的配備解除を行ってください。またCORBAアプリケーションが停止状態でない場合は、配備解除ができません。CORBAアプリケーションを停止状態にすることで、配備解除を行うことができます。ただし停止状態にする際、現在実行中のオペレーションがエラーになる可能性があります。安全な停止方法については7.2.3 コマンドを利用した開始と停止を参照してください。

6.2.2 コマンドを利用した配備解除

運用管理コマンドを利用してCORBAアプリケーションを配備解除する方法について説明します。CORBAアプリケーションを配備解除するための条件については6.2.1 動的配備解除と静的配備解除を参照してください。なお、運用管理コマンドの詳細については運用管理コマンドリファレンスマニュアルの「undeploy」を参照ください。

配備解除するには、アプリケーション名を指定してundeployオペレーションを実行します。

otxadmin> undeploy アプリケーション名

例えば、アプリケーション名が「corba」であるCORBAアプリケーションを配備解除するには、次のようにします。

otxadmin> undeploy corba

6.2.3 統合運用管理ツールを利用した配備解除

ここでは統合運用管理ツールを利用してCORBAアプリケーションを配備解除する手順を説明します。CORBAアプリケーションを配備解除するための条件については6.2.1 動的配備解除と静的配備解除を参照してください。

  1. 統合運用管理ツールの画面右側のツリーから、配備解除するCORBAアプリケーションの名前を選択し、右クリックします。表示されたメニューの中から「配備解除」を選択します。
  2. 配備解除の各種設定を行った後、「OK」ボタンを押下します。
  3. 配備解除に成功すると、以下のような画面が表示されます。

6.3 共有コンポーネントの配備解除

ここでは、共有コンポーネントの配備解除について説明します。

6.3.1 コマンドを利用した配備解除

運用管理コマンドを利用して共有コンポーネントを配備解除する方法について説明します。なお、運用管理コマンドの詳細については運用管理コマンドリファレンスマニュアルの「undeploy」を参照ください。

配備解除するには、アプリケーション名を指定してundeployオペレーションを実行します。

otxadmin> undeploy アプリケーション名

例えば、アプリケーション名が「shared」である共有コンポーネントを配備解除するには、次のようにします。

otxadmin> undeploy shared

6.3.2 統合運用管理ツールを利用した配備解除

ここでは、統合運用管理ツールを利用して共有コンポーネントを配備解除する手順について説明します。

  1. 統合運用管理ツールの画面右側のツリーから、配備解除する共有コンポーネントの名前を選択し、右クリックします。表示されたメニューの中から「配備解除」を選択します。
  2. 配備解除の各種設定を行った後、「OK」ボタンを押下します。
  3. 配備解除に成功すると、以下のような画面が表示されます。

6.4 注意事項

7 開始と停止

アプリケーションが開始した状態とは、配備されたアプリケーションが動作しており、クライアントからの要求を受け付けることができる状態です。また、アプリケーションが停止した状態とは、アプリケーションが動作していない状態のことで、クライアントからの要求は受け付けることができませんが、アプリケーションは依然としてWebOTXの管理下にあります。この章ではアプリケーションの開始と停止について解説します。

7.1 Java EEのアプリケーションの開始と停止

この節では、Java EEのアプリケーションの開始と停止について説明します。特に断りがない限り、説明はJava EEアプリケーションの種類すべてに共通しているものとします。

7.1.1 コマンドを利用した開始と停止

運用管理コマンドを利用してJava EEのアプリケーションを開始/停止する方法について説明します。なお、運用管理コマンドの詳細については運用管理コマンドリファレンスマニュアルの「enable」、「disable」を参照してください。

アプリケーションを開始するにはオペレーションenableを、停止するにはオペレーションdisableを実行します。

otxadmin> enable アプリケーション名
otxadmin> disable アプリケーション名

具体例を挙げると、アプリケーション名が「myapp」であるアプリケーションを開始し、その後停止するには、次のようにします。

otxadmin> enable myapp
otxadmin> disable myapp

7.1.2 統合運用管理ツールを利用した開始と停止

ここでは統合運用管理ツールを利用して、Java EEアプリケーションを開始/停止する手順を説明します。

まず、アプリケーションの開始から説明します。

  1. 統合運用管理ツールの画面右側のツリーから「アプリケーション」を選択し、右クリックします。表示されたメニューから「コンポーネントの開始」をクリックします。
  2. 表示されたダイアログに、開始するアプリケーションの名前を入力します。入力が完了したら「実行」ボタンを押下します。
  3. 開始に成功すると、以下の画面のように成功を示すメッセージが表示されます。

次に、アプリケーションの停止の手順について説明します。

  1. 統合運用管理ツールの画面右側のツリーから「アプリケーション」を選択し、右クリックします。表示されたメニューから「コンポーネントの停止」をクリックします。
  2. 表示されたダイアログに、停止するアプリケーションの名前を入力します。入力が完了したら「実行」ボタンを押下します。
  3. 停止に成功すると、以下の画面のように成功を示すメッセージが表示されます。

7.2 CORBAアプリケーションの開始と停止

ここでは、CORBAアプリケーションの開始と停止について説明します。

7.2.1 CORBAアプリケーションの形式

CORBAアプリケーションの形式がR4形式なのかR5形式なのかによって、開始/停止の方法が異なります。

R4形式のCORBAアプリケーションの場合、アプリケーション単位の開始/停止はできません。プロセスグループの開始/停止、あるいはアプリケーショングループの開始/停止により、該当CORBAアプリケーションを開始/停止してください。

R5形式のCORBAアプリケーションの場合は、アプリケーション単位の開始/停止をサポートしています。ただし、アプリケーション単位の開始/停止を行う場合は以下の条件を満たす必要があります。

ただし、アプリケーション単位の開始が成功するためには、そのアプリケーションが属しているプロセスグループが開始している必要があります。

バージョン5のプロセスグループはアプリケーション単位の開始/停止をサポートしていませんので、プロセスグループの開始/停止、あるいはアプリケーショングループの開始/停止により、該当CORBAアプリケーションを開始/停止してください。

7.2.2 安全な停止

使用中のCORBAアプリケーションを停止してしまうと、以後はそのCORBAアプリケーションに対する呼び出しは失敗します。安全にCORBAアプリケーションの停止を行うためには、そのCORBAアプリケーションがクライアントから利用されていないか確認する必要があります。CORBAアプリケーションの利用状況ついては、以下の情報が参考になります。

モジュールアイドル時間が十分に長い場合、そのアプリケーションは利用されていないと判断できます。モジュールアイドル時間が-1の時は、オペレーションが実行中であることを示しています。。

統合運用管理ツールを利用する場合、モジュールアイドル時間とモジュールアクティブオブジェクト数は以下の場所で確認できます。

また、運用管理コマンドを利用する場合は、以下のようにします。

otxadmin> get applications.corba-applications.[アプリケーション名].[モジュール名].idleTime
otxadmin> get -m applications.[アプリケーション名].[モジュール名].[インタフェース名].activeObject-Current

具体例を挙げると、アプリケーション名が「myapp」、モジュール名が「corba.jar」、インタフェース名が「loopback」の場合、次のようになります。モジュール名に含まれるピリオド「.」は円マーク「\」でエスケープする必要がある点に注意してください。

otxadmin> get applications.corba-applications.myapp.corba\.jar.idleTime
otxadmin> get -m applications.myapp.corba\.jar.loopback.activeObject-Current

7.2.3 コマンドを利用した開始と停止

運用管理コマンドを利用してCORBAアプリケーションを開始/停止する方法について説明します。なお、運用管理コマンドの詳細については運用管理コマンドリファレンスマニュアルの「enable」、「disable」を参照してください。

アプリケーション単位の開始/停止が可能な場合には、開始するにはオペレーションenableを、停止するにはオペレーションdisableを実行します。

otxadmin> enable アプリケーション名
otxadmin> disable アプリケーション名

具体例を挙げると、アプリケーション名が「myapp」であるCORBAアプリケーションを開始し、その後停止するには、次のようにします。

otxadmin> enable myapp
otxadmin> disable myapp

アプリケーション単位の開始/停止がサポートされていない場合には、プロセスグループあるいはアプリケーショングループの開始/停止を行うことにより、該当CORBAアプリケーションを開始/停止します。プロセスグループの開始/停止にはオペレーションstart-pg/stop-pgを、アプリケーショングループの開始/停止にはオペレーションstart-apg/stop-apgを利用します。

otxadmin> start-pg プロセスグループ名
otxadmin> stop-pg プロセスグループ名
otxadmin> start-apg アプリケーショングループ名
otxadmin> stop-apg アプリケーショングループ名

具体例を挙げます。アプリケーショングループ「apg」、プロセスグループ「pg」に配備されているCORBAアプリケーション「myapp」があるとします。アプリケーショングループを開始することによりアプリケーションを開始し、プロセスグループを停止することによりアプリケーションを停止するには、以下のようにします。

otxadmin> start-apg apg
otxadmin> stop-pg pg

7.2.4 統合運用管理ツールを利用した開始と停止

アプリケーション単位の開始/停止が可能な場合について解説します。アプリケーショングループとプロセスグループの開始/停止の手順については「運用編(TPモニタの運用操作)」を参照してください。

まずCORBAアプリケーションを開始する手順を示します。

  1. 統合運用管理ツールの画面右側の、CORBAアプリケーションのモジュール名を選択し、右クリックします。表示されたメニューの中から「活性化」を選択します。
  2. 開始のための確認のダイアログが表示されますので、「実行」ボタンを押下してください。
  3. 開始処理が完了したことを示すメッセージが表示されますので、「閉じる」ボタンを押下して下さい。
  4. 正常に開始処理が完了すると、CORBAアプリケーションのモジュールを示すノードのアイコンが緑色になります。

次に、CORBAアプリケーションを停止する手順について解説します。

7.3 注意事項

8 ライフサイクルモジュール

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

LifecycleListener実装クラスの実装方法については「APIリファレンスマニュアル」の「6.ライフサイクル・リスナ」を参照してください。

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

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

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

8.4.1 登録

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

  1. 統合運用管理ツールよりドメインと接続します。
  2. ツリービューより[アプリケーション]を選択します。
  3. [操作]-[ライフサイクルモジュールの作成]を実行します。
  4. ライフサイクルモジュール名、クラスパス、クラス名を入力し、「OK」ボタンを押します。
  5. Standard EditionおよびEnterprise Editionにおいて、ライフサイクルモジュールをプロセスグループ上で動作させる場合は、追加で以下の作業も必要になります。

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

8.4.2 登録削除

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

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

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

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

8.4.3 一覧の取得

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

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

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

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

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

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

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

8.5.1 登録

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

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

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

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

8.5.2 登録削除

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

otxadmin> delete-lifecycle-module Sample

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

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

8.5.3 一覧の取得

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

otxadmin> list-lifecycle-modules

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

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

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

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

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

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

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

属性名 統合運用管理ツールでの表記 Dotted Name 説明
name 文字列 ライフサイクルモジュール名 server.applications.lifecycle-module.ライフサイクルモジュール名.name ライフサイクルモジュール名です。ここで指定した名前でライフサイクルモジュールをドメインに登録します。ただし、文字列にスペースを混入させることはできません。
class-name 文字列 ライフサイクルモジュールクラス名 server.applications.lifecycle-module.ライフサイクルモジュール名.class-name LifecycelLisner実装クラスのクラス名を、パッケージ名を含めて指定します。
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

サーバ名は、アプリケーショングループ名とプロセスグループ名を-(ハイフン)でつないだものです。

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

 

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

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

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

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

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

または

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

9 配備チューニング

この章では主に配備処理を高速化する方法について解説します。アプリケーションの開発時には、配備/配備解除が頻繁に繰り返されるため、配備処理の高速化を意識することで開発効率が向上します。

9.1 EJBのメソッド識別情報の割り当て抑止(Standard/Enterprise Edition)

TPモニタでは、オペレーション毎にトランザクション等の実行時情報を管理する機能を備えています。あるモジュールが配備されると、TPモニタでは個々のオペレーションを識別するために番号を付与して、内部管理テーブルと状態情報との関連付けを行います。EJBモジュールの場合には、オペレーションがリモートインタフェースのメソッドに該当します。

メソッド識別情報の割り当て範囲を限定することにより、配備処理中に行われる識別情報の生成数を削減し、配備処理にかかる時間の短縮およびメモリ消費量の削減が可能です。

9.1.1 オプション

割り当て方法は以下の中から選択できます。

メソッド名 ステートレスSession Bean ステートフルSession Bean Entity Bean メッセージドリブンBean
リモートインタフェース
getEJBHome() × × × -
getPrimaryKey() × × × -
getHandle() × × × -
isIdentical(javax.ejb.EJBObject) × × × -
remove() × -
ホームインタフェース
getEJBMetaData() × × × -
getHomeHandle() × × × -
remove(java.lang.Object) × × -
remove(javax.ejb.Handle) × -
[EJB生成メソッド](例:create()メソッド) × -
[ファインダメソッド](例:findByPrimaryKey(String)メソッド) - - -
凡例
割り当てます
× 割り当てません
- 存在しません

(注:メッセージドリブンBeanのonMessage()メソッド、タイマーBeanのejbTimeout()メソッドについてはリモートメソッドではありませんが、どのオプションでも割り当てられます。)

識別情報を割り当てなかったメソッドに対しては以下の機能が使用できなくなります。

しかしながら、割り当てるメソッド数を減らすことにより、モジュールの配備時間が向上し、消費メモリ量が削減されます。

注意:「割り当てない」オプションを使用すると障害発生時の原因解析が困難になる場合があります。頻繁に配備/配備解除を繰り返す開発時には有用ですが、本番環境では「ビジネスメソッドのみ割り当てる」もしくは「全てのリモートメソッドに対して割り当てる」を使用することを強く推奨します。

9.1.2 指定方法

これらのオプションの指定は、EJBモジュールを配備操作する時に行います。以下では、配備操作を支援する機能毎に説明します。

統合運用管理ツール

コンポーネント配備ダイアログの「EJBメソッド識別情報の割り当て方法」で設定します。

運用管理コマンド

deploy サブコマンドに「--methodid」オプションを指定します。

--methodid all 全てのリモートメソッドに対して割り当てる
--methodid limit ビジネスメソッドのみ割り当てる (既定値)
--methodid none 割り当てない
オートデプロイ (自動配備)

ドメインのautodeployディレクトリ下のautodeploy.iniファイルで以下の指定をします。

methodid=all 全てのリモートメソッドに対して割り当てる
methodid=limit ビジネスメソッドのみ割り当てる (既定値)
methodid=none 割り当てない

10 Java EEアプリケーションの実行時環境

10.1 クラスローダ

WebOTXサーバのクラスローダについて理解しておくことは、開発者や運用者がアプリケーション共通で使うJARアーカイブやアプリケーション・モジュールのためのリソース・ファイルを、どの位置に配置すべきかを決める際に重要な助けとなります。

Java VMでは、クラスローダはJavaアプリケーションの起動の時や実行中に、動的にクラス間の依存を解決するために必要な特定のJavaクラスファイルをロードします。

この章では、Java EEアプリケーションが動作するときのクラスローダについて説明します。

10.1.1 クラスローダ構造

WebOTX上でJava EEアプリケーションが動作する時のクラスローダ構造について説明します。

下の図はクラスローダの親子関係を表しています。矢印は親子関係を表します。

各クラスローダの説明を以下に示します。

システムクラスローダより下のクラスローダはWebOTXが提供するクラスローダとなります。

クラスローダ 説明
ブートストラップクラスローダ JDKのクラスとドメインのlib/ext下に置かれたjarまたはzipファイルをロードするクラスローダです。
システムクラスローダ WebOTXのシステムライブラリ、classpath-prefix, server-classpath, classpath-suffixで指定されたライブラリをロードするクラスローダです。
ドメイン共通クラスローダ ドメインのlibディレクトリに置かれたjarまたはzipファイルとlib/classes下に置かれたクラスファイルをロードするクラスローダです。
共有コンポーネントクラスローダ ドメインに配備された共有コンポーネントに含まれるクラスをロードするクラスローダです。Standard/Enterprise EditionのEJB, CORBA Javaコンポーネントでのみ使用可能です。インストール時にWebコンテナの動作モードをマルチプロセスモードで選択した場合はWebモジュールからも使用できます。共有コンポーネントを配備解除することにより動的にクラスをアンロードすることが可能です。
コネクタクラスローダ ドメインに配備されたリソースアダプタに含まれるクラスをロードするクラスローダです。
EJBクラスローダ Java EEアプリケーションまたはEJBモジュールに含まれるクラスをロードするクラスローダです。
Webコンテナクラスローダ Java EEアプリケーションまたはWebモジュールに含まれるクラスをロードするクラスローダ)。
JSPエンジンクラスローダ コンパイルされたJSPのクラスをロードするクラスローダです。
クラスローダの親子関係について

Webアプリケーションでは、クラスローダの親子関係ににより、つぎのような動作をします。上位のクラスローダでロードされたクラスからは下位のクラスローダでロードされたクラスは参照することができません。逆に、下位のクラスローダでロードされたクラスからは、上位のクラスローダでロードされたクラスは参照することができます。

クラスローダの委譲モデル

J2SEでは一般的にクラスローダはロードする際に委譲モデルを使用します。委譲モデルでは、クラスローダが個々のクラスやリソースのロード要求を受けた場合、まずは要求を親のクラスローダに委譲し、親のクラスローダが要求されたクラスやリソースを見つけられなかった場合だけ自分のリポジトリから検索するように動作します。

WebOTXの提供するクラスローダも基本的には委譲モデルで動作します。例外として、Webコンテナクラスローダは、Servletのバージョンが2.3以前の場合、デフォルトでは委譲モデルを採用しません。これはServlet仕様バージョン 2.3の9.6節での勧告に基づくものです(ただしJREの基本クラスについてはオーバライドできません)。

委譲モデルを使用するかどうかはWARファイルに含まれるnec-web.xmlで定義されているclass-loader要素のdelegateの値で設定することができます。 この設定を変更することで、クラスをロードする際の優先順位が変わります。同じ名前のライブラリがある場合、優先順位が高いほうのクラスローダによりロードされます。

delegate=trueの場合の優先順位

同じ名前のライブラリがある場合、Webアプリケーション側(WEB-INF/lib)よりも、WebOTXのシステムライブリやドメインのlibディレクトリなどに配置したライブラリを優先して読み込みます。 WebOTXに含まれるライブラリと重なっている場合、delegate=trueに設定することで問題を回避することができます。

delegate=falseの場合の優先順位

同じ名前のライブラリがある場合、Webアプリケーション側(WEB-INF/lib)に配置したライブラリを優先して読み込みます。

10.1.2 アプリケーション間で共通に使用するJavaライブラリの配置

ドメインに配備された複数のアプリケーションで共通に参照されるクラスの配置方法について説明します。

各アプリケーションをロードするクラスローダは配備されたEARファイル、またはモジュール単位で別々となります。つまりあるアプリケーションのアーカイブファイルに含まれるクラスから他のアプリケーションに含まれるクラス、リソースを参照することはできません。

各種ユーティリティ・クラスや複数のアプリケーションから共通に使用したいJavaライブラリを配置するには以下の方法があります。

システムクラスローダを使用する場合

システムクラスローダを使用する場合は、コンテナがJava VMを起動するときのクラスパスで参照するJavaライブラリの配置場所を指定します。

共通クラスローダを使用する場合

共通に参照するクラス、リソースがjarまたはzipファイルにアーカイブされている場合はそのファイルを${INSTANCE_ROOT}/libディレクトリに配置します。アーカイブされていない場合はそのファイルを${INSTANCE_ROOT}/classesディレクトリにそのクラス、リソースのパッケージ名をディレクトリ構造に反映させた形で配置します。変更した場合はプロセスを再起動する必要があります。

共有コンポーネントを使用する場合

共有コンポーネントに含まれるクラスはプロセスグループ上で動作するEJB, Web,CORBAアプリケーションから参照することができます。各アプリケーションに対して参照する共有コンポーネントを設定する必要があります。共有コンポーネントの追加、変更を行なう場合、参照する全てのEJB, Web, CORBA Javaアプリケーションの閉塞を行なった後、共有コンポーネントを配備すればよく、プロセスを再起動する必要はありません。

Java拡張パッケージ機能を使用する

共通に参照するクラス、リソースのjarまたはzipアーカイブを${INSTANCE_ROOT}/lib/extディレクトリに配置します。ここに配置されたクラスは、ブートストラップクラスを拡張するもので、ブートストラップクラスローダと同等のクラスローダでロードされます。このためドメイン内の全てのクラスを参照することができます。ただしWebOTXのシステムライブラリより先にクラス検索が行なわれるため、例えばJava EEのAPIクラスなどのWebOTXのシステムライブラリに含まれるクラスを含むライブラリを配置すると、クラスロードの依存関係が変わり、エージェントが起動できなくなる可能性があります。変更した場合はプロセスを再起動する必要があります。

参照するアプリケーションのアーカイブに含める

これはドメインに配備された全アプリケーションでなく、特定のアプリケーションからライブラリを参照するための方法です。参照する全てのアプリケーションでこの操作を行なう必要があります。

参照するクラスが別のアプリケーションである場合、参照先アプリケーションが配備されるときに生成されるクライアントJarを参照元アプリケーションに含めます。単なるユーティリティである場合はそれをjarファイルにアーカイブしてアプリケーションに含めます。

参照元がEJBアプリケーションである場合、そのEJB JARファイルのマニフェストファイルのClass-Pathエントリで参照先のjarファイルをEJB JARファイルからの相対パスで記述します。

参照元がWebアプリケーションである場合、EJBと同様にマニフェストファイルのClass-Pathエントリで指定するか、WEB-INF/lib下にjarファイルを格納します。

変更した場合はアプリケーションの再配備が必要となります。プロセスを再起動する必要はありません。

アプリケーションの構成とEdition別の共通クラスの配置方法

Java EEアプリケーションの構成と使用するWebOTXのエディションごとの共通クラスの可能な配置方法を以下に示します。

アプリケーションの構成 Web Edition Standard-J Edition Standard/Enterprise Edition
Webアプリケーションのみ
  • Java拡張パッケージ機能
  • システムクラスローダ
  • 共通クラスローダ
  • 参照するアプリケーションのアーカイブに含める
  • Java拡張パッケージ機能
  • システムクラスローダ
  • 共通クラスローダ
  • 参照するアプリケーションのアーカイブに含める
  • Java拡張パッケージ機能
  • システムクラスローダ
  • 共通クラスローダ
  • 共有コンポーネント(マルチプロセスモード選択時)
  • 参照するアプリケーションのアーカイブに含める
EJBアプリケーションのみ -
  • Java拡張パッケージ機能
  • システムクラスローダ
  • 共通クラスローダ
  • 参照するアプリケーションのアーカイブに含める
  • Java拡張パッケージ機能
  • システムクラスローダ
  • 共通クラスローダ
  • 共有コンポーネント
  • 参照するアプリケーションのアーカイブに含める
Web + EJBアプリケーション -
  • Java拡張パッケージ機能
  • システムクラスローダ
  • 共通クラスローダ
  • 参照するアプリケーションのアーカイブに含める
  • Java拡張パッケージ機能
  • システムクラスローダ
  • 共通クラスローダ
  • 参照するアプリケーションのアーカイブに含める

共有コンポーネントはStandard/Enterprise EdtionのEJB, CORBA Javaアプリケーションのみから参照可能であるため、Webアプリケーションからも参照したい場合は別の方法で配置する必要があります。ただしWebコンテナの動作モードをマルチプロセスモードでインストールした場合はWebアプリケーションからも参照可能です。

システムクラスローダと共通クラスローダはどちらの方法を採用しても動作にはあまり違いがありません。共通クラスローダの方がファイルを配置するだけで手順が簡単ですのでこちらの方を推奨します。

Java拡張パッケージ機能は全てのケースにおいて有効ですが、ブートストラップクラスへの追加はWebOTXの動作に影響する可能性があるため、必要最小限のものだけを配置することを強く推奨します。

JDBCデータソースを使用する場合のJDBCドライバの配置方法

JDBCドライバのクラスは通常、共通で参照されるライブラリとして配置しますが、他のライブラリとは異なる点があります。

JDKのjava.sql.DriverManagerクラスはドライバをロードするときに、呼び出し元のクラスローダでJDBCドライバをロードしようとします。WebOTXのJDBCデータソースを使用する場合、呼び出し元はWebOTXシステムクラスに含まれるJDBCデータソースの実装クラスとなります。

つまりWebOTXのJDBCデータソースを使用してJDBCアクセスする場合、WebOTXシステムクラスをロードしたクラスローダでJDBCドライバがロードされます。このため、JDBCドライバはシステムクラスローダまたはJava拡張パッケージとして配置する必要があります。

共通クラスの参照エラー

参照するライブラリは正しく配置されているにもかかわらず、アプリケーションのロード、または実行時に共通クラスのロード、または実行を行なったときにjava.lang.NoClassDefFoundErrorが発生することがあります。これは通常、共通ライブラリからアプリケーション内のクラスを参照していることが原因です。

共通クラスはアプリケーションをロードするクラスローダよりも親のクラスローダとなります。親のクラスローダでロードしたクラスから、子のクラスローダでロードしたクラスを参照することはできません。

よくある例としては、共通クラスで定義したメソッドにインタフェースや抽象クラスを引数として渡している場合、その実装クラスがアプリケーション側にしか存在しないとメソッド実行時にエラーが発生します。この場合は実装クラスも共通クラスローダでロードする必要があります。

アプリケーションの共通クラスへの配置

通常アプリケーションで必要なクラス、例えばWebアプリケーションにおけるサーブレット実装クラス、EJBアプリケーションにおけるホーム、リモートインタフェース、EJB実装クラスなどはアプリケーションのアーカイブファイル内に配置され、アプリケーション固有のクラスローダでロードされます。これらクラスを共通クラスに配置し、配備するファイルには配備記述子だけを含めて配備することも可能です。例えば複数のEJBアプリケーションで同じインタフェースクラスを使用する場合、インタフェースクラスのみをjarにアーカイブして共通クラスとして配置し、各アプリケーションにはインタフェースファイルを含めずに配備することでインタフェースクラスを一元管理することができます。ただし、インタフェースを変更した場合は全アプリケーションに影響があり、多くの場合ドメイン再起動が必要となります。