Tomcat Webアプリケーションマネージャーの使い方
目次
はじめに
多くの本番環境では、Tomcatをシャットダウンして再起動することなくWebアプリケーションを管理できる機能が非常に役立ちます。このドキュメントは、WebアプリケーションマネージャーのHTML Webインターフェースに関するものです。
インターフェースは6つのセクションに分かれています
- メッセージ - 成功と失敗のメッセージを表示します。
- マネージャー - リストやヘルプなどの一般的なマネージャー操作。
- アプリケーション - Webアプリケーションとコマンドのリスト。
- デプロイ - Webアプリケーションのデプロイ。
- 診断 - 潜在的な問題の特定。
- サーバー情報 - Tomcatサーバーに関する情報。
メッセージ
実行した最後のWebアプリケーションマネージャーコマンドの成否に関する情報を表示します。成功した場合はOKが表示され、成功メッセージが続く場合があります。失敗した場合は、FAILが表示され、エラーメッセージが続きます。一般的なエラーメッセージは、各コマンドについて以下に記載されています。各コマンドの失敗メッセージの完全なリストは、マネージャーWebアプリケーションのドキュメントにあります。
マネージャー
マネージャーセクションには3つのリンクがあります
- アプリケーションのリスト - Webアプリケーションのリストを再表示します。
- HTMLマネージャーヘルプ - このドキュメントへのリンク。
- マネージャーヘルプ - 包括的なマネージャーアプリの使用方法へのリンク。
アプリケーション
アプリケーションセクションには、インストールされているすべてのWebアプリケーションに関する情報がリストされ、それらを管理するためのリンクが提供されます。各Webアプリケーションについて、以下が表示されます
- パス - Webアプリケーションのコンテキストパス。
- 表示名 - 「web.xml」ファイルに設定されている場合、Webアプリケーションの表示名。
- 実行中 - Webアプリケーションが実行中で使用可能かどうか(true)、または実行中でなく使用不可かどうか(false)。
- セッション - このWebアプリケーションのリモートユーザーのアクティブセッションの数。セッション数はリンクになっており、送信するとメッセージボックスにWebアプリケーションによるセッション使用状況の詳細が表示されます。
- コマンド - Webアプリケーションで実行できるすべてのコマンドをリストします。実行可能なコマンドのみが、送信可能なリンクとしてリストされます。マネージャーWebアプリケーション自体では、コマンドを実行できません。以下のコマンドを実行できます
- 起動 - 停止していたWebアプリケーションを起動します。
- 停止 - 現在実行中のWebアプリケーションを停止し、使用不可にします。
- 再読み込み -
/WEB-INF/lib/
の新しい「.jar」ファイルまたは/WEB-INF/classes/
の新しいクラスを使用できるように、Webアプリケーションを再読み込みします。 - アンデプロイ - このWebアプリケーションを停止してからサーバーから削除します。
起動
停止したアプリケーションに再起動して再び利用可能になるように信号を送ります。停止と起動は、たとえば、アプリケーションに必要なデータベースが一時的に使用できなくなった場合に役立ちます。ユーザーが継続的にデータベース例外に遭遇するのを防ぐため、通常はこのデータベースに依存するWebアプリケーションを停止する方が良いでしょう。
このコマンドが成功すると、次のようなメッセージが表示されます
OK - Started application at context path /examples
そうでない場合、メッセージはFAIL
で始まり、エラーメッセージが含まれます。問題の考えられる原因は次のとおりです
- 例外が発生しました
Webアプリケーションの起動中に例外が発生しました。詳細については、Tomcatログを確認してください。
- 無効なコンテキストパスが指定されました
コンテキストパスは、ROOT Webアプリケーションを参照していない限り、スラッシュ文字で始まる必要があります。ROOT Webアプリケーションを参照している場合は、コンテキストパスは長さゼロの文字列である必要があります。
- パス/fooのコンテキストが存在しません
指定したコンテキストパスにデプロイされたアプリケーションがありません。
- コンテキストパスが指定されていません
path
パラメータが必要です。
停止
既存のアプリケーションに利用不可にするように信号を送信しますが、デプロイされたままにします。アプリケーションの停止中に受信したリクエストは、HTTPエラー404が表示され、このアプリケーションはアプリケーションリストコマンドで「停止」として表示されます。
このコマンドが成功すると、次のようなメッセージが表示されます
OK - Stopped application at context path /examples
そうでない場合、メッセージはFAIL
で始まり、エラーメッセージが含まれます。問題の考えられる原因は次のとおりです
- 例外が発生しました
Webアプリケーションの停止中に例外が発生しました。詳細については、Tomcatログを確認してください。
- 無効なコンテキストパスが指定されました
コンテキストパスは、ROOT Webアプリケーションを参照していない限り、スラッシュ文字で始まる必要があります。ROOT Webアプリケーションを参照している場合は、コンテキストパスは長さゼロの文字列である必要があります。
- パス/fooのコンテキストが存在しません
指定したコンテキストパスにデプロイされたアプリケーションがありません。
- コンテキストパスが指定されていません
path
パラメータが必要です。
再読み込み
既存のアプリケーションにシャットダウンして再読み込みするように信号を送信します。これは、Webアプリケーションコンテキストが再読み込み不可で、/WEB-INF/classes
ディレクトリ内のクラスまたはプロパティファイルを更新した場合、または/WEB-INF/lib
ディレクトリ内のjarファイルを追加または更新した場合に役立ちます。
注:/WEB-INF/web.xml
Webアプリケーション構成ファイルは、再読み込み時にはチェックされません。以前のweb.xml構成が使用されます。 web.xmlファイルに変更を加えた場合は、Webアプリケーションを停止してから起動する必要があります。
このコマンドが成功すると、次のようなメッセージが表示されます
OK - Reloaded application at context path /examples
そうでない場合、メッセージはFAIL
で始まり、エラーメッセージが含まれます。問題の考えられる原因は次のとおりです
- 例外が発生しました
Webアプリケーションの再起動中に例外が発生しました。詳細については、Tomcatログを確認してください。
- 無効なコンテキストパスが指定されました
コンテキストパスは、ROOT Webアプリケーションを参照していない限り、スラッシュ文字で始まる必要があります。ROOT Webアプリケーションを参照している場合は、コンテキストパスは長さゼロの文字列である必要があります。
- パス/fooのコンテキストが存在しません
指定したコンテキストパスにデプロイされたアプリケーションがありません。
- コンテキストパスが指定されていません
path
パラメータが必要です。 - パス/fooにデプロイされたWARでは再読み込みがサポートされていません
現在、ホストがWARファイルを解凍しないように構成されている場合に発生する、WARファイルから直接Webアプリケーションをインストールする場合、アプリケーションの再読み込み(クラスまたは
web.xml
ファイルへの変更を反映するため)はサポートされていません。解凍されたディレクトリからWebアプリケーションをインストールした場合にのみ機能するため、WARファイルを使用している場合は、変更を反映するためにアプリケーションをアンデプロイ
してから再びデプロイ
する必要があります。
アンデプロイ
警告 - このコマンドは、この仮想ホストのappBase
ディレクトリ(通常は「webapps」)内にWebアプリケーションディレクトリまたは「.war」ファイルが存在する場合、その内容を削除します。Webアプリケーションの一時作業ディレクトリも削除されます。アプリケーションをサービスから外すだけの場合は、代わりに/stop
コマンドを使用する必要があります。
既存のアプリケーションに正常にシャットダウンするように信号を送信し、Tomcatから削除します(これにより、このコンテキストパスを後で再利用できるようになります)。このコマンドは、/deploy
Antコマンド、およびHTMLマネージャーで使用可能な関連するデプロイ機能の論理的な反対です。
このコマンドが成功すると、次のようなメッセージが表示されます
OK - Undeployed application at context path /examples
そうでない場合、メッセージはFAIL
で始まり、エラーメッセージが含まれます。問題の考えられる原因は次のとおりです
- 例外が発生しました
Webアプリケーションのアンデプロイ中に例外が発生しました。詳細については、Tomcatログを確認してください。
- 無効なコンテキストパスが指定されました
コンテキストパスは、ROOT Webアプリケーションを参照していない限り、スラッシュ文字で始まる必要があります。ROOT Webアプリケーションを参照している場合は、コンテキストパスは長さゼロの文字列である必要があります。
- パス/fooのコンテキストが存在しません
指定したコンテキストパスにデプロイされたアプリケーションがありません。
- コンテキストパスが指定されていません
path
パラメータが必要です。
デプロイ
Webアプリケーションは、Tomcatサーバーにあるファイルまたはディレクトリを使用してデプロイすることも、Webアプリケーションアーカイブ(WAR)ファイルをサーバーにアップロードすることもできます。
アプリケーションをインストールするには、実行するインストールのタイプに適切なフィールドに入力し、[インストール]ボタンを使用して送信します。
サーバーにあるディレクトリまたはWARファイルをデプロイ
指定された*コンテキストパス:*(他のWebアプリケーションで使用されていない必要があります)に添付された新しいWebアプリケーションをデプロイして起動します。このコマンドは、*アンデプロイ*コマンドの論理的な反対です。
deployコマンドを使用するには、さまざまな方法があります。
URLでディレクトリまたはWARをデプロイ
TomcatサーバーにあるWebアプリケーションディレクトリまたは「.war」ファイルをインストールします。*コンテキストパス*が指定されていない場合、ディレクトリ名または「.war」拡張子がないwarファイル名がパスとして使用されます。*WARまたはディレクトリURL*は、ディレクトリまたはWebアプリケーションアーカイブ(WAR)ファイルのURL(`file:`スキームを含む)を指定します。WARファイルを参照するURLのサポートされている構文については、`java.net.JarURLConnection`クラスのJavadocsページに記載されています。WARファイル全体を参照するURLのみを使用してください。
この例では、Windowsで実行されているTomcatサーバーのディレクトリ`C:\ path \ to \ foo`にあるWebアプリケーションが、` / footoo`という名前のWebアプリケーションコンテキストとしてデプロイされます。
Context Path: /footoo
WAR or Directory URL: file:C:/path/to/foo
この例では、Unixで実行されているTomcatサーバーの「.war」ファイル`/ path / to / bar.war`が、`/ bar`という名前のWebアプリケーションコンテキストとしてデプロイされます。 `path`パラメータがないため、コンテキストパスはデフォルトで「.war」拡張子がないWebアプリケーションアーカイブファイルの名前に設定されます。
WAR or Directory URL: jar:file:/path/to/bar.war!/
ホストappBaseからディレクトリまたはWARをデプロイ
ホストappBaseディレクトリにあるWebアプリケーションディレクトリまたは「.war」ファイルをインストールします。*コンテキストパス*が指定されていない場合、ディレクトリ名または「.war」拡張子がないwarファイル名がパスとして使用されます。
この例では、TomcatサーバーのHost appBaseディレクトリにあるfoo
という名前のサブディレクトリにあるWebアプリケーションが、/foo
という名前のWebアプリケーションコンテキストとしてデプロイされます。 path
パラメータがないため、コンテキストパスはデフォルトでWebアプリケーションディレクトリの名前になります。
WAR or Directory URL: foo
この例では、TomcatサーバーのHost appBaseディレクトリにあるbar.war
という名前の ".war" ファイルが、/bartoo
という名前のWebアプリケーションコンテキストとしてデプロイされます。
Context Path: /bartoo
WAR or Directory URL: bar.war
コンテキスト設定「.xml」ファイルを使用してデプロイ
HostのdeployXMLフラグがtrueに設定されている場合、Context設定 ".xml" ファイルとオプションの ".war" ファイルまたはWebアプリケーションディレクトリを使用してWebアプリケーションをインストールできます。 コンテキスト ".xml" 設定ファイルを使用してWebアプリケーションをインストールする場合、*コンテキストパス*は使用されません。
Context設定 ".xml" ファイルには、Tomcatのserver.xml
設定ファイルで設定されている場合と同様に、Webアプリケーションコンテキストの有効なXMLを含めることができます。 Windowsで実行されているTomcatの例を次に示します。
<Context path="/foobar" docBase="C:\path\to\application\foobar">
</Context>
*WARまたはディレクトリURL*の使用はオプションです。 Webアプリケーションの ".war" ファイルまたはディレクトリを選択するために使用する場合、コンテキスト設定 ".xml" ファイルで設定されているdocBaseをオーバーライドします。
Windowsで実行されているTomcatのContext設定 ".xml" ファイルを使用してアプリケーションをインストールする例を次に示します。
XML Configuration file URL: file:C:/path/to/context.xml
サーバー上にあるContext設定 ".xml" ファイルとWebアプリケーションの ".war" ファイルを使用してアプリケーションをインストールする例を次に示します(Unixで実行されているTomcat)。
XML Configuration file URL: file:/path/to/context.xml
WAR or Directory URL: jar:file:/path/to/bar.war!/
インストールするWARファイルをアップロード
ローカルシステムからWARファイルをアップロードし、HostのappBaseにインストールします。 ".war" 拡張子を除いたWARファイルの名前がコンテキストパス名として使用されます。
*参照*ボタンを使用して、ローカルデスクトップシステムからサーバーにアップロードするWARファイルを選択します。
.WARファイルには、/META-INF/context.xml
にContext設定XMLファイルを含めることで、Tomcat固有のデプロイ設定を含めることができます。
WARファイルのアップロードは、次の理由で失敗する可能性があります。
- アップロードされたファイルは.warである必要があります
アップロードインストールでは、ファイル名拡張子が ".war" のファイルのみを受け入れます。
- Warファイルはサーバーに既に存在します
同じ名前のWARファイルがHostのappBaseに既に存在する場合、アップロードは失敗します。 HostのappBaseから既存のWARファイルをアンデプロイするか、別の名前を使用して新しいWARファイルをアップロードします。
- ファイルのアップロードに失敗しました。ファイルがありません
ファイルのアップロードに失敗しました。サーバーでファイルが受信されませんでした。
- インストールのアップロードに失敗しました。例外
WARファイルのアップロードまたはインストールがJava例外で失敗しました。 例外メッセージが表示されます。
デプロイメントに関する注意事項
HostがunpackWARs = trueに設定されていて、WARファイルをインストールすると、WARはHost appBaseディレクトリのディレクトリに解凍されます。
アプリケーションのWARまたはディレクトリがHost appBaseディレクトリにデプロイされ、HostがautoDeploy = trueに設定されている場合、コンテキストパスは ".war" 拡張子を除いたディレクトリ名またはWARファイル名と一致する必要があります。
信頼できないユーザーがWebアプリケーションを管理できる場合のセキュリティのために、Host deployXMLフラグをfalseに設定できます。 これにより、信頼できないユーザーが設定XMLファイルを使用してWebアプリケーションをインストールしたり、Host appBaseの外部にあるアプリケーションディレクトリまたは ".war" ファイルをインストールしたりすることができなくなります。
デプロイメッセージ
デプロイと起動が成功すると、次のようなメッセージが表示されます。
OK - Deployed application at context path /foo
そうでない場合、メッセージはFAIL
で始まり、エラーメッセージが含まれます。問題の考えられる原因は次のとおりです
- アプリケーションはパス/ fooに既に存在します
現在実行中のすべてのWebアプリケーションのコンテキストパスは一意である必要があります。 したがって、このコンテキストパスを使用して既存のWebアプリケーションをアンデプロイするか、新しいWebアプリケーションに別のコンテキストパスを選択する必要があります。
- ドキュメントベースが存在しないか、読み取り可能なディレクトリではありません
*WARまたはディレクトリURL:*フィールドで指定されたURLは、Webアプリケーションの「解凍された」バージョンを含むこのサーバー上のディレクトリ、またはこのアプリケーションを含むWebアプリケーションアーカイブ(WAR)ファイルの絶対URLを識別する必要があります。 *WARまたはディレクトリURL:*フィールドに入力された値を修正してください。
- 例外が発生しました
新しいWebアプリケーションの起動中に例外が発生しました。 詳細についてはTomcatログを確認してください。考えられる説明としては、
/WEB-INF/web.xml
ファイルの解析の問題、またはアプリケーションイベントリスナーとフィルターの初期化時に見つからないクラスなどがあります。 - 無効なアプリケーションURLが指定されました
指定した*WARまたはディレクトリURL:*フィールドのURLが無効でした。 このようなURLは
file:
で始まる必要があり、WARファイルのURLは ".war" で終わる必要があります。 - 無効なコンテキストパスが指定されました
コンテキストパスは、ROOT Webアプリケーションを参照していない限り、スラッシュ文字で始まる必要があります。ROOT Webアプリケーションを参照している場合は、コンテキストパスは "/" 文字列である必要があります。
- コンテキストパスはディレクトリまたはWARファイル名と一致する必要があります
アプリケーションのWARまたはディレクトリがHost appBaseディレクトリにデプロイされ、HostがautoDeploy = trueに設定されている場合、コンテキストパスは ".war" 拡張子を除いたディレクトリ名またはWARファイル名と一致する必要があります。
- Host WebアプリケーションディレクトリにあるWebアプリケーションのみをデプロイできます
Host deployXMLフラグがfalseに設定されている場合、Host appBaseディレクトリの外部にあるWebアプリケーションディレクトリまたは ".war" ファイルをインストールしようとすると、このエラーが発生します。
診断
メモリリークの発見
リークの検出診断は、完全なガベージコレクションをトリガーします。 本番システムでは、細心の注意を払って使用する必要があります。
リークの検出診断は、停止、リロード、またはアンデプロイされたときにメモリリークを引き起こしたWebアプリケーションを特定しようとします。 結果は常にプロファイラで確認する必要があります。 診断では、StandardHost実装によって提供される追加機能が使用されます。 StandardHostを拡張しないカスタムホストが使用されている場合は機能しません。
この診断では、停止、リロード、またはアンデプロイされたWebアプリケーションのコンテキストパスが一覧表示されますが、以前の実行からのクラスがメモリにまだ残っているため、メモリリークが発生しています。 アプリケーションが数回リロードされている場合、数回リストされる可能性があります.
Javaコードから完全なガベージコレクションを明示的にトリガーすることは、信頼できないとされています。 さらに、使用されるJVMによっては、`-XX:+DisableExplicitGC`のように、明示的なGCトリガーを無効にするオプションがあります。 診断が正常に完全なGCを実行していることを確認する場合は、GCロギング、JConsoleなどのツールを使用して確認する必要があります。
サーバー情報
このセクションには、Tomcat、Tomcatがホストされているサーバーのオペレーティングシステム、Tomcatが実行されているJava仮想マシン、サーバーのプライマリホスト名(Tomcatへのアクセスに使用されるホスト名ではない場合があります)、およびサーバーのプライマリIPアドレス(Tomcatへのアクセスに使用されるIPアドレスではない場合があります)に関する情報が表示されます。