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\LocalServiceNT 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 jvmJava、または exe のいずれか。モードは次のとおりです。
  • jvm - Java をインプロセスで起動します。jvm.dll に依存します。--Jvm を参照してください。
  • Java - exe と同じですが、デフォルトの Java 実行可能ファイル、つまり %JAVA_HOME%\bin\java.exe を自動的に使用します。JAVA_HOME が正しく設定されているか、--JavaHome を使用して正しい場所を指定してください。どちらも設定されていない場合、procrun は Windows レジストリからデフォルトの JDK(JRE ではない)を見つけようとします。
  • exe - イメージを別のプロセスとして実行します。
--StartImage 実行される実行可能ファイル。exe モードにのみ適用されます。
--StartPath スタート イメージ実行可能ファイルの作業パス。
--StartClass Main 起動メソッドを含むクラス。jvm および Java モードに適用されます。(exe モードでは使用されません。)
--StartMethod main main と異なる場合はメソッド名。
++StartParams StartImage または StartClass のいずれかに渡されるパラメーターのリスト。パラメーターは、# または ; 文字を使用して区切られます。
--StopMode jvmJava、または 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 ロギング レベルを定義します。ErrorInfoWarn、または 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