World Map
Java Service Wrapperは、御社Javaアプリケーション製品の安定した信頼性を高める最短最善の方法です。
  • Free Trial
  • Buy Now
アプリケーションを起動する (Windows)

アプリケーションを起動するコントロールする (Windows)

Windows 上で Java アプリケーションを、 デスクトップアプリケーションとして、 あるいはバックグランドの Windows サービスとして、 どちらの形式でも動かすことが可能です。Windows サービスとして動かす場合、 Wrapper のインストール、アンインストール、開始、停止、ステータス(状況)のクエリー(問い合わせ)など必要です。 アプリケーションが GUI 環境を持っているか、あるいはコンソール(コマンドウィンドウ)で動作させる仕様なのか、 それ次第でも、どのように動作させるべきか決まってきます。

専用バッチファイル

Windows システム上で、Wrapper を起動する簡単な方法は、専用バッチファイルを利用することです。 Wrapper をコントロールする各アクションを操作することができます。 これでエンドユーザーが簡単にバッチファイルをダブルクリックやメニューのリンクを設定したりできます。

バッチファイルを利用する

Wrapper 配布物の「%WRAPPER_HOME%\src\bin」フォルダを覗くと、 それぞれ機能別のタスクに応じた、たくさんのバッチファイルテンプレートが見えます。 (このページで示す他のフォルダには、さらに他のファイルもあります)

特定のアプリケーションが動作するように Wrapper を設定する際に、 アプリケーションの仕様に合わせて、上記のバッチファイルのどれかを選ぶことができます。 例えば、もしアプリケーションが「ポーズ(一時停止)」に対応していない場合には、 「PauseApp-NT.bat.in」や「ResumeApp-NT.bat.in」は効果ありません。

バッチファイルを設定する

注意

なお、ご利用のコンピューターの設定状況によっては、拡張子が見えない場合がありますので、 拡張子が表示されるよう事前に設定を変更する必要があるかもしれません。

それぞれ必要なバッチファイルを利用するには、 アプリケーションのbin」フォルダにバッチファイルを単純にコピーしてご利用ください。 ファイル名のApp」部分をアプリケーション名に変更して、 ファイル名の拡張子.in」を削除してください。

ファイル名の変更例:
App.bat.in             -> MyApp.bat
InstallApp-NT.bat.in   -> InstallMyApp-NT.bat
StartApp-NT.bat.in     -> StartMyApp-NT.bat
StopApp-NT.bat.in      -> StopMyApp-NT.bat
UninstallApp-NT.bat.in -> UninstallMyApp-NT.bat

全てのファイルの上部に、アプリケーションのディレクトリー構造やファイル名に合わせてカスタマイズできるセクションが含まれています。

HelloWorldServer.java (Change)
rem -----------------------------------------------------------------------------
rem These settings can be modified to fit the needs of your application
rem Optimized for use with version @wrapper.version@ of the Wrapper.

rem The base name for the Wrapper binary.
set _WRAPPER_BASE=wrapper

rem The name and location of the Wrapper configuration file.   This will be used
rem  if the user does not specify a configuration file as the first parameter to
rem  this script.  It will not be possible to specify a configuration file on the
rem  command line if _PASS_THROUGH is set.
set _WRAPPER_CONF_DEFAULT=../conf/wrapper.conf

rem _PASS_THROUGH tells the script to pass all parameters through to the JVM as
rem  is.
rem set _PASS_THROUGH=true

rem Do not modify anything beyond this point
rem -----------------------------------------------------------------------------

コンソールで動かす

アプリケーションを起動する

コンソール(コマンドウィンドウ)でアプリケーションを起動するには、ファイルエクスプローラーを開き、 MyApp.bat」バッチファイルをダブルクリックで実行します。 あるいは、コンソール(コマンドウィンドウ)を開いて、プロンプトから、そのバッチファイルを実行してください。 Wrapper がカレントディレクトリーを設定してくれるお陰で、 「bin」ディレクトリー内部から、このバッチファイルを実行する必要はありません。

出力例:
C:\MyApp\bin>MyApp.bat
wrapper  | --> Wrapperがコンソールとして開始しました
wrapper  | Java Service Wrapper Professional Edition 64-bit {version}
wrapper  |   Copyright (C) 1999-{year} Tanuki Software, Ltd. All Rights Reserved.
wrapper  |     http://wrapper.tanukisoftware.com
wrapper  |   {licensee} へライセンスを割り当て
wrapper  |
wrapper  | JVM起動中...
jvm 1    | WrapperManager: 初期化中...

アプリケーションを終了する

アプリケーションを終了するには、 コンソール(コマンドウィンドウ)から[CTRL]+[C]のキー操作で、アプリケーションを任意停止します。 これで、アプリケーションはキレイにシャットダウンされます。 さらに詳しくは「コンソールアプリケーションを停止するには?」ページをご覧ください。

アプリケーションを Windows サービスとして動かす

注意

作業に入る前に、 「wrapper.conf」ファイルのプロパティ設定で、 Windows コンフィギュレーションプロパティが全て設定済みであることを確認してください。 また、コンソールモードで正しくアプリケーションが動作していることを検証してください。

Windows サービスとしてインストール

InstallMyApp-NT.bat」バッチファイルをダブルクリックして実行する、 あるいは、コンソール(コマンドウィンドウ)を開いて、コマンドプロンプトから、 その「InstallMyApp-NT.bat」バッチファイルを実行することで、 アプリケーションを Windows サービスとしてインストールすることができます。

もし、正しくインストールできなかった場合、そのインストールバッチファイルは、ただちに終了します。 もし何か問題があった場合、「成功しなかった」というエラーメッセージが表示され、 ユーザーが何かキーを押すまで、応答待ちになります。

コマンドと出力例:
C:\MyApp\bin>InstallMyApp-NT.bat
wrapper  | My Application サービスがインストールされました。

Windows サービスとして開始および停止する

各バッチファイルを利用して、サービスを開始したり停止したりすることができます。

コマンドと出力例:
C:\MyApp\bin>StartMyApp-NT.bat
wrapper  | My Application サービスを開始中...
wrapper  | My Application started.
C:\MyApp\bin>StopMyApp-NT.bat
wrapper  | My Application サービスを停止中...
wrapper  | My Applicationが停止しました.

あるいは、Windows のサービスとして動作しているため、 Windows のサービスコントロールパネル([コントロールパネル]→[管理ツール]→[サービス])を開き、 該当するサービスを選び、[開始]をクリックすることで、アプリケーションをスタートやストップすることができます。

さらに、 サービスの開始コマンド[net start MyAppサービスの停止コマンド[net stop MyAppを使って、 サービスをコントロールすることができます。

コマンドと出力例:
C:\MyApp\bin>net start MyApp
My Application サービスを開始中...
My Application サービスが正常に開始しました。
C:\MyApp\bin>net stop MyApp
My Application サービスを停止中...
My Application サービスが正常に停止しました。

注意

net start x]や[net stop x]コマンドは、 開始や停止に時間を要するサービスでは問題があります。ほとんどのケースで動作はしますが、 もしサービスが停止するのに2,3秒かかる場合、まだ停止プロセスの途中であっても 「net stop x」コマンドは「サービスが停止されていた」と返してきます。 これでは、処理前にサービスが本当に停止されるまでスクリプトが待機しなければならない状況で、問題になります。 そこで、サービスの開始や停止にWrapperを利用すれば、そのような問題を確実に回避することができます。

wrapper.conf」ファイル以外、 他のどこかに存在するような、インストールされているサービスの実際の名前を要求しないため、 スクリプトを使ったサービス開始や停止をするWrapper手法は便利です。 そのため、もしサービス名が変更されても、複数のファイルを手作業で編集する必要がありません。

もし[wrapper.ntservice.starttype]プロパティが、 AUTO_START」(自動スタート)に設定されている場合、 マシンが再起動するときには、いつでもサービスがスタートします。

Windows サービスからアンインストール(取り外し)する

サービスをアンインストールするには、 [UninstallMyApp-NT.bat]バッチファイルを実行してください。 もし現在、サービス動作中の場合には、まずそのサービスを停止してから実行されます。

コマンドと出力例:
C:\MyApp\bin>UninstallMyApp-NT.bat
wrapper  | サービスは動作しています。停止中...
wrapper  | 停止の待機中...
wrapper  | My Application が停止されました。
wrapper  | My Application サービスを取り外しました。

コマンドベースのバッチファイル

UNIX ベースのOS(オペレーティングシステム)からポートを利用するような一部のアプリケーションでは、 サービスのコントロールに UNIX 形式のコマンドスクリプトを使った方が、動作が良いこともあります。 コマンドベースのバッチファイルは、個別の専用バッチファイルの全ての機能を統合し、 一つのファイルになっているため、パラメータとしてコマンドを扱えます。

バッチファイルを利用する

Wrapper 配布物の「%WRAPPER_HOME%\src\bin」フォルダを覗くと、 バッチファイルテンプレート「AppCommand.bat.inが見えます。

アプリケーションのbin」フォルダにバッチファイルを単純にコピーしてご利用ください。 ファイル名のApp」部分をアプリケーション名に変更して、 ファイル名の拡張子.in」を削除してください。

ファイル名の変更例:
MyServerCommand.bat.in   -> MyServerCommand.bat
MyServer.bat.in     -> MyServer.bat

全てのファイルの上部に、アプリケーションのディレクトリー構造やファイル名に合わせてカスタマイズできるセクションが含まれています。

スクリプトのコンフィギュレーション部分:
rem -----------------------------------------------------------------------------
rem These settings can be modified to fit the needs of your application
rem Optimized for use with version @wrapper.version@ of the Wrapper.

rem The base name for the Wrapper binary.
set _WRAPPER_BASE=wrapper

rem The name and location of the Wrapper configuration file.
rem  (Do not remove quotes.)
set _WRAPPER_CONF="../conf/wrapper.conf"

rem _FIXED_COMMAND tells the script to use a hard coded command rather than
rem  expecting the first parameter of the command line to be the command.
rem  By default the command will will be expected to be the first parameter.
rem set _FIXED_COMMAND=console

rem _PASS_THROUGH tells the script to pass all parameters through to the JVM
rem  as is.  If _FIXED_COMMAND is specified then all parameters will be passed.
rem  If not set then all parameters starting with the second will be passed.
set _PASS_THROUGH=true

rem Do not modify anything beyond this point
rem -----------------------------------------------------------------------------

スクリプトを実行する

コマンドベースのバッチファイル自身に説明が含まれており、 ユーザーが何もパラメータを付けずに、スクリプトを動かしてみた場合、使い方が表示されます。

使い方:
Usage:  [ console : start : pause : resume : stop : restart : install : update : remove : status ]
Press any key to continue . . .
_PASS_THROUGH を有効にした使い方:
Usage:  [ console {JavaAppArgs} : start : pause : resume : stop : restart : install {JavaAppArgs} : update {JavaAppArgs} : remove : status ]
Press any key to continue . . .

このバッチファイルは、UNIX スクリプトと少し違いがあります。 UNIX スクリプトは、コンソールで動作している Wrapper を停止するために使うことができますが、 Windows 用のバッチファイルでは不可能です。 さらに加えて、[dump]コマンドは、Windows 用のバッチファイルにはありません。

ご覧のとおり、コマンドベースのバッチファイルは、幅の広い能力を提供しています:

一例として、次のコマンドを利用して、コンソールで Wrapper を開始できます:

C:\MyApp\bin>MyApp.bat console
wrapper  | --> Wrapperがコンソールとして開始しました
wrapper  | Java Service Wrapper Professional Edition 64-bit {version}
wrapper  |   Copyright (C) 1999-{year} Tanuki Software, Ltd. All Rights Reserved.
wrapper  |     http://wrapper.tanukisoftware.com
wrapper  |   {licensee} へライセンスを割り当て
wrapper  |
wrapper  | JVM起動中...
jvm 1    | WrapperManager: 初期化中...

他のコマンドを実行するには、単純に「console」コマンドを、実行したいコマンドに書き換えてください。

スタンドアローンバイナリ

Java Service Wrapper は、バッチファイルを利用せずに、直接、動作させることもできます。

Wrapper の使い方

もし、パラメータを付けずに、あるいは、-?を付けて 「wrapper」ファイルを実行すると、 以下のように、使い方の出力が表示されます。

Wrapper 使い方:
Java Service Wrapper Professional Edition 64-bit {version}
  Copyright (C) 1999-{year} Tanuki Software, Ltd. All Rights Reserved.
    http://wrapper.tanukisoftware.com

使い方:
  bin\wrapper <コマンド> <コンフィギュレーションファイル> [プロパティ] [...]
  bin\wrapper <コンフィギュレーションファイル> [プロパティ] [...]
     (<コマンド> 暗黙的に '-c')
  bin\wrapper <コマンド>
     (<コンフィギュレーションファイル> 暗黙的に 'wrapper.conf')
  bin\wrapper
     (<コマンド> 暗黙的に '-c' and <コンフィギュレーションファイル> 'wrapper.conf')
  bin\wrapper --customize [カスタマイズ引数]

該当する<コマンド>は次のどれか:
  -c  --console コンソールアプリケーションとして動かす
  -t  --start   サービスを開始する
  -a  --pause   開始したサービスを一時停止する
  -e  --resume  一時停止したサービスを再開する
  -p  --stop    動作中のサービスを停止する
  -i  --install サービスとしてインストールする
  -it --installstart インストールしてサービスとして開始する
  -u  --update インストールされたサービスを更新する
  -r  --remove  サービスから取り外す/アンインストールする
  -l=<code> --controlcode=<code> がユーザーコントロールコードを動作中のサービスへ送る
  -d  --dump    スレッドダンプをリクエストする
  -q  --query   サービスの現在の状況を問い合わせる
  -qs --querysilent 静かにサービスの現在の状況を問い合わせる
  -h  --hostid  このホストにライセンスされた利用ホストIDのリストを表示する。
  -v  --version Wrapper のバージョン情報を表示する。
  -?  --help    このヘルプメッセージを表示する
  -- <args>     Wrapper 引数の終わりにマーク。「--」の後の引数は修正せずに
                全部そのまま Java アップリケーションに渡します。

使用する<コンフィギュレーションファイル> は「wrapper.conf」です。名前は、
「bin\wrapper」の場所への絶対参照か相対参照でなければなりません

[コンフィギュレーションプロパティ]は、コンフィギュレーション名と値の組み合わせで、
wrapper.confに値を上書きします。例:
  wrapper.debug=true

  --customize  このコマンドは、Wrapper 実行ファイルのカスタマイズを許可します。
    次の[カスタマイズ引数]が利用できます:
      --target <ターゲットファイル> カスタマイズされたWrapper実行ファイル
          の名前や場所を指定します。このプロパティは必須です、
          デフォルトファイル名の推測は、可能でなく安全でもないため。
      --icon <アイコンファイル> Wrapper 実行ファイル用のカスタムアイコンを指定します。
      --passthrough もし設定されている場合、新しい Wrapper 実行ファイルが、
                    ラップされたアプリケーションへのコマンドライン全体よりも優位になります。 
      --conf <confファイル> conf ファイルのデフォルト配置を指定します
      --manufacturer <メーカー> バイナリでメーカーへの変更

  Wrapper 実行ファイルの配置場所へのファイル参照は、絶対参照あるいは相対参照
  でなければなりませんので、注意してください。]

アプリケーションを開始する

コンソールアプリケーションとして Wrapper を動かすために、 「wrapper.conf」ファイルに続いて、 -c]コマンドを指定する必要があります。 「wrapper.conf」ファイルの配置場所は、絶対パスか相対パスで設定することができます。 もし、相対パスが利用されている場合、そのパスは、カレントディレクトリーではなく、 常に「wrapper.exe」ファイル場所への相対参照です。

コマンド例:
C:\MyApp\bin>wrapper.exe -c ..\conf\wrapper.conf

サービスとしてアプリケーションをインストールする

アプリケーションを Windows サービスとしてインストールするためには、 以下の-i]コマンドを実行します:

コマンド例:
C:\MyApp\bin>wrapper.exe -i ..\conf\wrapper.conf

サービスとしてアプリケーションを開始する

一旦インストールされると、そのサービスは、他の Windows サービスと同じようにスタートします。 もし、[wrapper.ntservice.starttype]が AUTO_START」(自動スタート)に設定されている場合、 インストールされたとき、次回のマシン再起動時にサービスがスタートします。 サービスコントロールパネル([コントロールパネル]→[管理ツール]→[サービス])からサービスを開始したり、 あるいは、以下の-t]コマンドを使い、サービスを開始することも可能です:

コマンド例:
C:\MyApp\bin>wrapper.exe -t ..\conf\wrapper.conf
C:\MyApp\bin>net start MyApp

注意

net start x]や[net stop x]コマンドは、 開始や停止に時間を要するサービスでは問題があります。ほとんどのケースで動作はしますが、 もしサービスが停止するのに2,3秒かかる場合、まだ停止プロセスの途中であっても 「net stop x」コマンドは「サービスが停止されていた」と返してきます。 これでは、処理前にサービスが本当に停止されるまでスクリプトが待機しなければならない状況で、問題になります。 そこで、サービスの開始や停止に Wrapper を利用すれば、そのような問題を確実に回避することができます。

wrapper.conf」ファイル以外、 他のどこかに存在するような、インストールされているサービスの実際の名前を要求しないため、 スクリプトを使ったサービス開始や停止をする Wrapper 手法は便利です。 そのため、もしサービス名が変更されても、複数のファイルを手作業で編集する必要がありません。

サービスとしてアプリケーションを停止する

サービスを停止するには、サービスコントロールパネル([コントロールパネル]→[管理ツール]→[サービス])で操作するか、 あるいは、次のコマンドのどちらかを実行します:

コマンド例:
C:\MyApp\bin>wrapper.exe -p ..\conf\wrapper.conf
C:\MyApp\bin>net stop MyApp

サービスからアプリケーションをアンインストール(取り外し)する

アプリケーションを Windows サービスからアンインストールするには、次の-r]コマンドを実行します:

コマンド例:
C:\MyApp\bin>wrapper.exe -r ..\conf\wrapper.conf

もし、サービスのアンインストール時に、そのサービスが実行中であっても、 キレイに停止して、サービスからアンインストールされます。

サービスとしてのアプリケーションのステータスを問い合わせする

Wrapper に、手動で、あるいは、バッチファイを使って、 次の-q]コマンドで、 サービス状況の問い合わせをすることができます。 これは、現在のサービス状況を知る必要があるスクリプトをインストールする際に便利です。

コマンドと出力例:
C:\MyApp\bin>wrapper.exe -q ..\conf\wrapper.conf
wrapper  | My Application サービスがインストールされています。
wrapper  |   スタートタイプ: 自動
wrapper  |   対話型: はい
wrapper  |   動作中: いいえ

もし-q]コマンドで動かすと、Wrapper は現在のステータスをコンソールに表示します。 -qs]コマンドでは静かに動作します。 Wrapper は、次の「終了コード」ビットの組み合わせで終了します:

例えば、終了コード「15」(=1+2+4+8)では、『サービスがインストールされ、動作し、インタラクティブであり、 システムの起動時に、自動的にスタートするように設定されている』ということを示しています。 終了コード「0 (ゼロ)」では、『サービスが現在インストールされていない』という意味を表します。

参照: Wrapper でアプリケーションを起動する