Windows サービス How-To
目次
Tomcat モニター アプリケーション
Tomcat10w は、Tomcat サービスを監視および構成するための GUI アプリケーションです。
コマンドライン ディレクティブ
各コマンドライン ディレクティブは、//XX[//ServiceName]
の形式です。
//ServiceName
コンポーネントが省略されている場合、サービス名は、w サフィックスを除いたファイルの名前であると見なされます。したがって、デフォルトのサービス名は Tomcat10
です。
使用可能なコマンドライン ディレクティブは次のとおりです。
//ES | サービス構成の編集 | これはデフォルトの操作です。オプションが指定されていない場合に呼び出されます。サービス構成の変更、開始、停止を可能にする GUI アプリケーションを起動します。 |
//MS | サービスの監視 | GUI アプリケーションを起動し、システム トレイに最小化します。 |
//MR | サービスの監視と実行 | GUI アプリケーションを起動し、システム トレイに最小化します。サービスが現在実行されていない場合は、開始します。 |
//MQ | 監視の終了 | サービスの実行中の監視を停止します。 |
Tomcat サービス アプリケーション
Tomcat10 は、Tomcat 10 を Windows サービスとして実行するためのサービス アプリケーションです。
コマンドライン ディレクティブ
各コマンドライン ディレクティブは、//XX[//ServiceName]
の形式です。
使用可能なコマンドライン ディレクティブは次のとおりです。
//TS | サービスをコンソール アプリケーションとして実行 | これはデフォルトの操作です。オプションが指定されていない場合に呼び出されます。ServiceName は、exe サフィックスのない実行可能ファイルの名前、つまり Tomcat10 です。 |
//RS | サービスを実行 | ServiceManager からのみ呼び出されます。 |
//ES | サービスを開始(実行)します。 | |
//SS | サービスを停止 | |
//US | サービス パラメーターの更新 | |
//IS | サービスをインストール | |
//DS | サービスを削除 | 実行中の場合はサービスを停止します。 |
//PS | サービスを印刷 | 現在の構成を(再)作成するコマンドを印刷します。 |
//PP[//秒数] | サービスを一時停止 | デフォルトは 60 秒です。 |
//VS | バージョン | バージョンを印刷して終了します。 |
//? | ヘルプ | 使用法を印刷して終了します。 |
コマンドライン パラメーター
各コマンドライン パラメーターには、--
がプレフィックスとして付いています。コマンドライン パラメーターに ++
がプレフィックスとして付いており、パラメーターが複数の値をサポートしている場合は、その値が既存のオプションに追加されます。以下の表では、複数の値をサポートするパラメーターには ++
がプレフィックスとして付いています。
コマンドライン パラメーターと同じ名前で PR_
がプレフィックスとして付いている環境変数が存在する場合は、それが優先されます。たとえば、
set PR_CLASSPATH=xx.jar
は、次のように指定することと同じです。
--Classpath=xx.jar
をコマンドライン パラメーターとして指定します。
ParameterName | Default | Description |
---|---|---|
--Description | サービス名の説明(最大 1024 文字) | |
--DisplayName | ServiceName | サービス表示名 |
--Install | procrun.exe //RS//ServiceName | インストール イメージ |
--Startup | manual | サービスの起動モードは auto または manual のいずれかです。 |
++DependsOn | このサービスが依存するサービスのリスト。依存サービスは、# または ; 文字を使用して区切られます。 | |
++Environment | key=value の形式でサービスに提供される環境変数のリスト。これらは、# または ; 文字を使用して区切られます。値内で # または ; 文字を使用する必要がある場合は、値全体を単一引用符で囲む必要があります。 | |
--User | 実行可能ファイルの実行に使用されるユーザー アカウント。これは StartMode java または exe の場合にのみ使用され、LogonAsService 特権のないアカウントでサービスとしてアプリケーションを実行できるようにします。 | |
--Password | --User パラメーターで設定されたユーザー アカウントのパスワード | |
--ServiceUser | サービスが実行されるアカウントの名前を指定します。DomainName\UserName の形式でアカウント名を使用します。サービス プロセスは、このユーザーとしてログオンされます。アカウントが組み込みドメインに属している場合は、.\UserName を指定できます。サービス コントロール マネージャーは標準名のローカライズされた形式を受け入れないため、それらを使用するには、必要に応じて NT Authority\LocalService 、NT Authority\NetworkService 、または LocalSystem を指定する必要があります。 |
|
--ServicePassword | --ServiceUser パラメーターで設定されたユーザー アカウントのパスワード | |
--LibraryPath | JVM の DLL を検索するために使用される検索パスに追加されるディレクトリ。このディレクトリは、PATH 環境変数の前と、SetDLLDirectory 関数のパラメーターの両方に追加されます。 |
|
--JavaHome | JAVA_HOME | JAVA_HOME 環境変数で定義されたものとは異なる JAVA_HOME を設定します。 |
--Jvm | auto | auto(Windows レジストリから JVM を検索)を使用するか、jvm.dll へのフルパスを指定します。ここでは環境変数の展開を使用できます。 |
++JvmOptions | -Xrs | JVM に渡される -D または -X の形式のオプションのリスト。オプションは、# または ; 文字を使用して区切られます。# または ; 文字を埋め込む必要がある場合は、単一引用符で囲みます。(exe モードでは使用されません。) |
++JvmOptions9 | Java 9 以降で実行する場合に JVM に渡される -D または -X の形式のオプションのリスト。オプションは、# または ; 文字を使用して区切られます。# または ; 文字を埋め込む必要がある場合は、単一引用符で囲みます。(exe モードでは使用されません。) | |
--Classpath | Java クラスパスを設定します。(exe モードでは使用されません。) | |
--JvmMs | 初期メモリ プール サイズ(MiB)。(exe モードでは使用されません。) | |
--JvmMx | 最大メモリ プール サイズ(MiB)。(exe モードでは使用されません。) | |
--JvmSs | スレッド スタック サイズ(KiB)。(exe モードでは使用されません。) | |
--StartMode | jvm、Java、または exe のいずれか。モードは次のとおりです。
|
|
--StartImage | 実行される実行可能ファイル。exe モードにのみ適用されます。 | |
--StartPath | スタート イメージ実行可能ファイルの作業パス。 | |
--StartClass | Main | 起動メソッドを含むクラス。jvm および Java モードに適用されます。(exe モードでは使用されません。) |
--StartMethod | main | main と異なる場合はメソッド名。 |
++StartParams | StartImage または StartClass のいずれかに渡されるパラメーターのリスト。パラメーターは、# または ; 文字を使用して区切られます。 | |
--StopMode | jvm、Java、または exe のいずれか。詳細については、--StartMode を参照してください。 | |
--StopImage | サービス停止信号で実行される実行可能ファイル。exe モードにのみ適用されます。 | |
--StopPath | ストップ イメージ実行可能ファイルの作業パス。jvm モードには適用されません。 | |
--StopClass | Main | サービス停止信号で使用されるクラス。jvm および Java モードに適用されます。 |
--StopMethod | main | main と異なる場合はメソッド名。 |
--StopParams | StopImage または StopClass のいずれかに渡されるパラメーターのリスト。パラメーターは、# または ; 文字を使用して区切られます。 | |
++StopTimeout | タイムアウトなし | procrun がサービスが正常に終了するのを待機するタイムアウトを秒単位で定義します。 |
--LogPath | %SystemRoot%\System32\LogFiles\Apache | ロギングのパスを定義します。必要に応じてディレクトリを作成します。 |
--LogPrefix | commons-daemon | サービス ログ ファイル名のプレフィックスを定義します。ログ ファイルは、LogPath ディレクトリに .YEAR-MONTH-DAY.log サフィックス付きで作成されます。 |
--LogLevel | Info | ロギング レベルを定義します。Error、Info、Warn、または Debug のいずれかです。(大文字と小文字は区別されません。) |
--LogJniMessages | 0 | procrun ログ ファイルで JVM jni デバッグ メッセージをキャプチャするには、これをゼロ以外(たとえば 1)に設定します。stdout/stderr リダイレクトを使用している場合は必要ありません。jvm モードにのみ適用されます。 |
--StdOutput | リダイレクトされた stdout ファイル名。auto という名前の場合、ファイルは LogPath 内に service-stdout.YEAR-MONTH-DAY.log という名前で作成されます。 | |
--StdError | リダイレクトされた stderr ファイル名。auto という名前の場合、ファイルは LogPath 内に service-stderr.YEAR-MONTH-DAY.log という名前で作成されます。 | |
--PidFile | 実行中のプロセス ID を格納するファイル名を定義します。実際のファイルは LogPath ディレクトリに作成されます。 |
サービスのインストール
サービスを手動でインストールする最も安全な方法は、提供されている service.bat スクリプトを使用することです。このスクリプトを実行するには管理者特権が必要です。必要に応じて、/user
スイッチを使用して、サービスのインストールに使用するユーザーを指定できます。
注: ユーザー アカウント制御 (UAC) が有効になっている場合、スクリプトによって 'Tomcat10.exe' が起動されると、追加の特権を求められます。
サービス インストーラーに追加のオプションを PR_*
環境変数として渡す場合は、OS でグローバルに構成するか、特権で昇格して設定するプログラムを起動する必要があります(たとえば、cmd.exe を右クリックして「管理者として実行」を選択します。Windows 8(以降)または Windows Server 2012(以降)では、エクスプローラーの「ファイル」メニューバーをクリックして、現在のディレクトリの特権付きコマンド プロンプトを開くことができます)。詳細については、56143 の問題を参照してください。
Install the service named 'Tomcat10'
C:\> service.bat install
Windows サービスに表示されるサービスの名前を指定できる、2 番目のオプションのパラメーターがあります。
Install the service named 'MyService'
C:\> service.bat install MyService
デフォルト以外の名前でサービスをインストールする場合、tomcat10.exe と tomcat10w.exe は、選択したサービス名と一致するように名前が変更される場合があります。これを行うには、--rename
オプションを使用します。
Install the service named 'MyService' with renaming
C:\> service.bat install MyService --rename
tomcat10.exe を使用している場合は、//IS パラメーターを使用する必要があります。
Install the service named 'Tomcat10'
C:\> tomcat10 //IS//Tomcat10 --DisplayName="Apache Tomcat 10" ^
--Install="C:\Program Files\Tomcat\bin\tomcat10.exe" --Jvm=auto ^
--StartMode=jvm --StopMode=jvm ^
--StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start ^
--StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop
サービスの更新
サービス パラメーターを更新するには、//US パラメーターを使用する必要があります。
Update the service named 'Tomcat10'
C:\> tomcat10 //US//Tomcat10 --Description="Apache Tomcat Server - https://tomcat.dokyumento.jp/ " ^
--Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar
サービスにオプションの名前を付けた場合は、次のように指定する必要があります。
Update the service named 'MyService'
C:\> tomcat10 //US//MyService --Description="Apache Tomcat Server - https://tomcat.dokyumento.jp/ " ^
--Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar
サービスの削除
サービスを削除するには、//DS パラメーターを使用する必要があります。
サービスが実行中の場合は、停止してから削除されます。
Remove the service named 'Tomcat10'
C:\> tomcat10 //DS//Tomcat10
サービスにオプションの名前を付けた場合は、次のように指定する必要があります。
Remove the service named 'MyService'
C:\> tomcat10 //DS//MyService
サービスのデバッグ
コンソールモードでサービスを実行するには、//TS パラメータを使用する必要があります。サービスのシャットダウンは、CTRL+C または CTRL+BREAK を押すことで開始できます。tomcat10.exe を testservice.exe にリネームすると、testservice.exe を実行するだけで、このコマンドモードがデフォルトで実行されます。
Run the service named 'Tomcat10' in console mode
C:\> tomcat10 //TS//Tomcat10 [additional arguments]
Or simply execute:
C:\> tomcat10
複数のインスタンス
Tomcatは複数のインスタンスのインストールをサポートしています。1つのTomcatインストールで、異なるIP/ポートの組み合わせで複数のインスタンスを実行したり、複数のTomcatバージョンをそれぞれ異なるIP/ポートで1つ以上のインスタンスを実行したりできます。
各インスタンスフォルダには、次の構造が必要です。
- conf
- logs
- temp
- webapps
- work
少なくとも、confにはCATALINA_HOME\conf\にある次のファイルのコピーが含まれている必要があります。コピーおよび編集されなかったファイルは、デフォルトでCATALINA_HOME\confから取得されます。つまり、CATALINA_BASE\confファイルはCATALINA_HOME\confのデフォルトを上書きします。
- server.xml
- web.xml
インスタンスがリッスンする固有のIP/ポートを指定するには、CATALINA_BASE\conf\server.xmlを編集する必要があります。<Connector port="8080" ...
を含む行を見つけ、address属性を追加するか、ポート番号を更新して、固有のIP/ポートの組み合わせを指定します。
インスタンスをインストールするには、まずCATALINA_HOME環境変数をTomcatインストールディレクトリの名前に設定します。次に、2つ目の環境変数CATALINA_BASEを作成し、インスタンスフォルダを指すようにします。その後、サービス名を指定して "service.bat install" コマンドを実行します。
set CATALINA_HOME=c:\tomcat_10
set CATALINA_BASE=c:\tomcat_10\instances\instance1
service.bat install instance1
サービス設定を変更するには、tomcat10w //ES//instance1 を実行します。
追加のインスタンスについては、追加のインスタンスフォルダを作成し、CATALINA_BASE環境変数を更新して、"service.bat install" を再度実行します。
set CATALINA_BASE=c:\tomcat_10\instances\instance2
service.bat install instance2