WebOTX Manual V11.1 (第6版) 目次を表示 |
運用管理コマンドのdeployオペレーションを利用してJava EEのアプリケーションを配備/再配備する方法について説明します。 なお、運用管理コマンドの詳細については運用管理コマンドリファレンスの「deploy」を参照してください。
配備するには、Java EEのアプリケーションのアーカイブを指定してオペレーションdeployを実行します。 WebOTX AS Standardの場合は、配備先のアプリケーショングループ名とプロセスグループ名を指定することができます。
otxadmin> deploy [--apgroup アプリケーショングループ名] [--pgroup プロセスグループ名] アーカイブ名
再配備するには、--forceオプションを付加します。
otxadmin> deploy --force アーカイブ名
具体例を挙げると、WebOTX AS Expressにおいてアーカイブ名が「hello.war」であるWebアプリケーションを配備し、その後再配備するには、次のようにします。
otxadmin> deploy hello.war
otxadmin> deploy --force hello.war
※ WebOTX AS Standardにおいてエージェントプロセスに配備する場合も同様です。
別の例を挙げると、WebOTX AS Standardにおいてアーカイブ名が「sample.jar」であるEJBアプリケーションをプロセスグループに配備し、その後再配備するには、次のようにします。 配備先のアプリケーショングループ名をapgで、プロセスグループ名をpgとしています。
otxadmin> deploy --apgroup apg --pgroup pg sample.jar
otxadmin> deploy --force sample.jar
運用管理コマンドのオペレーションdeploydirを利用してJava EEのアプリケーションを配備/再配備する方法について説明します。 なお、運用管理コマンドの詳細については運用管理コマンドリファレンスの「deploydir」を参照してください。
通常の配備では、アプリケーションをパッケージングし、そのアーカイブを配備します。 オペレーションdeploydirを利用すると、パッケージング前のディレクトリ構造そのものを配備することができます。
配備するには、Java EEのアプリケーションが格納されているディレクトリのフルパスを指定してオペレーションdeploydirを実行します。 配備対象のディレクトリのフルパスは、WebOTX ASが動作しているホストにおけるフルパスです。 アプリケーションをクライアントマシンからサーバマシンへ転送する機能はありません。 WebOTX AS Standardでは、配備先のアプリケーショングループ名とプロセスグループ名を指定することができます。
otxadmin> deploydir [--apgroup アプリケーショングループ名] [--pgroup プロセスグループ名] ディレクトリのフルパス
再配備するには、--forceオプションを付加します。
otxadmin> deploydir --force ディレクトリのフルパス
具体例を挙げると、WebOTX AS Expressにおいてアプリケーションのディレクトリのフルパスが「C:\hello」であるWebアプリケーションを配備し、その後再配備するには、次のようにします。
otxadmin> deploydir C:\\hello
otxadmin> deploydir --force C:\\hello
※ WebOTX AS Standardにおいてエージェントプロセスに配備する場合も同様です。
※ 運用管理コマンドでは、ファイルパスのセパレータ '\' は "\\" として入力する必要があります。
別の例を挙げると、WebOTX AS Standardにおいて、サーバ上でのディレクトリのフルパスが「C:\sample」であるWebアプリケーションをプロセスグループに配備し、その後再配備するには次のようにします。 配備先のアプリケーショングループ名をapgで、プロセスグループ名をpgとしています。
otxadmin> deploydir --apgroup apg --pgroup pg C:\\sample
otxadmin> deploydir --force C:\\sample
オペレーションdeploydirは、システムの開発効率を上げるために提供しています。 そのため本番環境ではdeploydirは利用せずに、deployを利用してください。 オペレーションdeploydirは配備するディレクトリの内容を直接に書き換えてしまうため、配備するディレクトリのバックアップを取ってから実行してください。
統合運用管理ツールを利用して、Java EEのアプリケーションを配備する手順を説明します。
運用管理コンソールを利用して、Java EEのアプリケーションを配備する手順を説明します。
オートデプロイ機能とは、アプリケーションのアーカイブファイルを次のディレクトリにコピーすることで自動的に配備を行う機能です。
${INSTANCE_ROOT}/autodeploy
配備が成功した場合には、ディレクトリautodeployに、[アーカイブファイル名]_deployedというファイルが作成されます。 また配備が失敗した場合は、[アーカイブファイル名]_deployFailedというファイルが作成されます。 これらのファイルの存在を確認することで、配備が正常に終了したかどうかを調べることができます。
再配備を行う場合は、再配備するアーカイブをディレクトリautodeployに上書きでコピーしてください。 上書きするアーカイブのタイムスタンプは、上書きされるアーカイブのタイムスタンプと異なる必要があります。 同じタイムスタンプのアーカイブで上書きした場合、配備処理は実行されません。
オートデプロイ機能は、配備が実行されるタイミングを制御することができません。 例えば、アーカイブファイルのコピー中にオートデプロイが実行されると、ファイルの内容が不完全であるために配備に失敗します。 そのため、本番環境ではオートデプロイ機能を利用することを推奨していません。 代わりに、deployコマンドや統合運用管理ツール等から明示的に配備を実行してください。
WebOTX AS Standardでは、配備時にアプリケーショングループとプロセスグループを指定することができます。 オートデプロイ機能で配備先のアプリケーショングループとプロセスグループを指定するには、ディレクトリautodeployに、プロパティファイルautodeploy.propertiesを作成し、内容を適切に設定してください。 プロパティファイルautodeploy.propertiesは、java.util.Propertiesが読み込める形式でなければいけません。 プロパティファイルautodeploy.propertiesはドメイン起動時に読み込まれ、その後変更するたびに再読み込みされます。 プロパティファイルautodeploy.propertiesに記述するプロパティの詳細を以下に示します。
キー | 値の説明 |
---|---|
apg |
登録先アプリケーショングループ名。 (アプリケーション固有の設定が無い場合のデフォルト値として使用されます) |
pg |
登録先プロセスグループ名。 (アプリケーション固有の設定が無い場合のデフォルト値として使用されます) |
methodid |
メソッド識別情報の割り当てモードの指定。
[ 配備チューニング > EJBのメソッド識別情報の割り当て抑止 STD ] 参照。 (アプリケーション固有の設定が無い場合のデフォルト値として使用されます) |
[アーカイブ名].apg | [アーカイブ名] のファイルを配備する際の登録先アプリケーショングループ名。 |
[アーカイブ名].pg | [アーカイブ名] のファイルを配備する際の登録先プロセスグループ名。 |
[アーカイブ名].methodid | [アーカイブ名] のファイルを配備する際のメソッド識別情報の割り当てモードの指定。 |
例えば、全てのアプリケーションをアプリケーショングループmyapg、プロセスグループmypgに配備する場合、autodeploy.propertiesで以下のように指定します。
apg=myapg pg=mypg
ただし、リソースアダプタやアプリケーションクライアントは [ 配備先の調整 ] により、エージェントプロセスに配備されます。
別の例では、「hello.jar」というアーカイブ名のEJBアプリケーションをアプリケーショングループapg1、プロセスグループpg1にメソッド識別情報割り当てモードをallとして配備し、「sample.war」というアーカイブ名のWebアプリケーションをエージェントプロセスに配備し、その他のアプリケーションをアプリケーショングループapg2、プロセスグループpg2にメソッド識別情報割り当てモードをlimitで配備する場合、autodeploy.propertiesで以下のように指定します。
apg=apg2 pg=pg2 methodid=limit hello.jar.apg=apg1 hello.jar.pg=pg1 hello.jar.methodid=all sample.war.apg= sample.war.pg= sample.war.methodid=
オートデプロイ機能の各種設定は、${INSTANCE_ROOT}/config/domain.xmlに記述してあります。 このdomain.xmlファイルの要素<das-config>の属性の値を編集することで、設定を変更することができます。 設定の変更は運用管理ツールや運用管理コマンドを使用して行うことができます。 domain.xmlを直接編集する場合はドメインを停止してから行ってください。 属性の詳細は以下の通りです。
属性 | 既定値 | 説明 |
---|---|---|
autodeploy-enabled | true | trueの場合、オートデプロイ機能が有効になります。falseの場合は、オートデプロイ機能は無効になり、動作しません。 |
autodeploy-polling-interval-in-seconds | 2 | オートデプロイのためのディレクトリを監視する間隔(ポーリング間隔)です。単位は秒です。 |
autodeploy-retry-timeout | 4 | オートデプロイのリトライを中止するまでのタイムアウト時間です。オートデプロイに失敗したアーカイブファイルは、次のポーリング時にリトライされます。これは、アーカイブのコピー中にオートデプロイが実行された場合に、はじめのオートデプロイで失敗しても、コピー完了後に再度オートデプロイを実行するためです。リトライタイムアウト時間が経過すると、以降のオートデプロイのリトライは実行されません。単位は秒です。 |
autodeploy-dir | ${INSTANCE_ROOT}/autodeploy | オートデプロイのためのディレクトリを設定します。このディレクトリは、絶対パスを指定します。 |
autodeploy-jsp-precompilation-enabled | false | trueの場合、配備中にJSPをコンパイルします。falseの場合、JSPのコンパイルは行いません。この場合はJSPの初回アクセス時に動的にコンパイルを実行します。 |
ダイナミックリロード機能はアーカイブファイルが展開された状態のディレクトリ配下の中にあるファイルを直接変更できます。 「オートデプロイ」の項で説明した構成情報ファイル「domain.xml」の同じ「das-config」要素内の中にある下記のダイナミックリロードに関する属性が有効になっていると、サーバは自動的に変更を検知し、アプリケーションを再ロードします。
属性 | 既定値 | 説明 |
---|---|---|
dynamic-reload-enabled | true | trueの場合、「.reload」ファイルのタイムスタンプをチェックし、更新されていればアプリケーションを読み込みなおします。 |
dynamic-reload-poll-interval-in-seconds | 2 | ダイナミックリロードのポーリング間隔を指定します。単位は秒です。 |
WebOTX ASに更新を知らせるためには次の操作を行います。
${INSTANCE_ROOT}/applications/<アプリケーション名>/.reload
ホットスワップ機能とは、アプリケーションのクラスファイルを更新を検知し、配備を行うことなくアプリケーションの更新を反映する機能です。
ホットスワップ機能を有効にすると、アプリケーションのディレクトリ内のクラスファイルが監視されます。
クラスファイルのタイムスタンプが変更されると、そのクラスファイルからロードされたクラスが再定義されます。
再定義に成功した場合も失敗した場合もログにメッセージが出力されます。
再定義する前に実行中のメソッドは次回実行時に更新が反映されます。
再定義に失敗した場合、再定義前のクラスがそのまま使用されます。
ホットスワップ機能を有効にするには、ドメインに対してホットスワップ機能を有効化した上で、個々のアプリケーションに対してホットスワップ機能を有効化する必要があります。 そのため、ドメイン単位およびアプリケーション単位で、ホットスワップ機能の有効・無効を切り替えることができます。
ホットスワップ機能の各種設定は、${INSTANCE_ROOT}/config/domain.xmlに記述してあります。 このdomain.xmlファイルの要素<das-config>の属性の値を編集することで、設定を変更することができます。 設定の変更は運用管理ツールや運用管理コマンドを使用して行うことができます。 domain.xmlを直接編集する場合はドメインを停止してから行ってください。 属性の詳細は以下の通りです。
属性 | 既定値 | 説明 |
---|---|---|
hotswap-enabled | false | trueの場合、ドメインに対してホットスワップ機能が有効になります。falseの場合は、ホットスワップ機能が無効になり動作しません。 |
hotswap-polling-interval-in-seconds | 2 | ホットスワップのためのディレクトリを監視する間隔(ポーリング間隔)です。単位は秒です。 |
また、domain.xmlファイルの要素<application>の属性の値を編集することで、アプリケーションに対する設定を変更することができます。 設定の変更は運用管理ツールや運用管理コマンドを使用して行うことができます。 domain.xmlを直接編集する場合はドメインを停止してから行ってください。 属性の詳細は以下の通りです。
属性 | 既定値 | 説明 |
---|---|---|
hotswap-enabled | false | trueの場合、アプリケーションのディレクトリをホットスワップ機能の監視対象に追加します。falseの場合は、アプリケーションのディレクトリは監視対象にならず、クラスファイルの更新は検知されません。この設定の変更は、アプリケーションの再起動で反映されます。 |
アプリケーションに対するホットスワップ機能の設定は、配備時の--hotswapenabledオプションでも行うことができます。
アプリケーションがディレクトリ「C:/apps/hello」にwarを展開した形式で存在する場合について説明します。
ディレクトリ構成例は以下の通りです。
ホットスワップ機能を有効化する手順は以下の通りです。
[配備時に有効化する場合]
otxadmin> set server.admin-service.das-config.hotswap-enabled=true
otxadmin> deploydir --hotswapenabled C:/apps/hello
[配備後に有効化する場合]
otxadmin> deploydir C:/apps/hello
otxadmin> set server.admin-service.das-config.hotswap-enabled=true
otxadmin> set server.applications.application.hello.hotswap-enabled=true
otxadmin> disable hello otxadmin> enable hello
上記の設定を行って、ホットスワップ機能が有効になっている状態で、アプリケーション内のクラスファイル(例: HelloServlet.class)を更新すると、ロード済みのクラスが再定義されます。 再定義に失敗した場合は、失敗原因とともにメッセージがログに出力されます。 なお、更新されたクラスファイルのクラスがまだロードされていない場合は、再定義されません。 その場合は、クラスがロードされるときに更新後のクラスファイルを読み込みます。
上記の例ではディレクトリ展開形式で配備したアプリケーションに対してホットスワップ機能を使用していますが、アーカイブ形式で配備したアプリケーションに対してもホットスワップ機能を使用することができます。
プロセスグループでホットスワップ機能を有効にするには、プロセスグループの「その他の引数」に以下の引数を追加する必要があります。
※ ${INSTALL_ROOT}はWebOTX ASのインストールディレクトリに置換してください。
-javaagent:${INSTALL_ROOT}/lib/deployment/hotswap-agent.jar
Java EEのアプリケーションへのアクセスパス(コンテキストパス)は通常パッケージング名(xxxx.war)の拡張子を除いた部分(xxxx)と等価となります。つまり Webブラウザからは
http://<host>/xxxx/
でアクセスすることになります。しかし、http://<host>/ としただけで特定のアプリケーションにアクセスしたい場合があります。このような場合は次のようにします(1 と 2 を実施)。
まず、対象となるアプリケーションを "/" への配備するための設定をします。
<?xml version="1.0" encoding="UTF-8"?> <nec-web-app> <context-root>/</context-root> </nec-web-app> |
<?xml version="1.0" encoding="UTF-8"?> <application ...> <web> <web-uri>sample.war</web-uri> <context-root>/</context-root> </web> </application> |
※ application.xmlとnec-web.xmlの両方に設定がある場合は、nec-web.xmlが優先されます。
下記2つのコマンドを入力し、ドメイン再起動します。
a) otxadmin> create-jvm-options -Dwebotx.webcontainer.serverconfig.NoRoot=false
b) otxadmin> add-pg-javasystem-property --apgroup [apgroup_name] --javasystemprop webotx.webcontainer.serverconfig.NoRoot --value false [pgroup_name]
【注意点】