[Java]JavaプログラムをWindowsでサービスとして起動する
Java Service Wrapperを使って、前回作成したjarをWindowsサービスにして実行する。
(コンソール出力を行うだけのプログラムなのでサービスにする意味は全くないが。)
以下のページを参考にした
http://wrapper.tanukisoftware.com/doc/japanese/qna-service.html
※公式トップのサポート→質問と回答→JavaアプリケーションをWindowsサービスの1つとして動かすには?
1.Java Service Wrapperのダウンロード
以下からWindows x86 スタンダード版 64bitをダウンロード
http://wrapper.tanukisoftware.com/doc/japanese/download.jsp
2.ディレクトリの準備
サンプルプログラムを以下に配置した
App bin springSample.jar
3.wrapperの必要なファイルのコピー
1.でダウンロードしたzipを展開し、必要なファイルを以下の通りコピーする。
また、ログファイル用にlogsディレクトリを作っておく
bin/wrapper.exe → App/bin lib/wrapper.jar → App/lib lib/wrapper.dll → App/lib src/conf/wrapper.conf.in → App/conf/wrapper.conf src/conf/wrapper-license-time.conf→ App/conf/wrapper-license-time.conf src/bin/App.bat.in → bin/App.bat src/bin/InstallApp-NT.bat.in → bin/InstallApp-NT.bat src/bin/UninstallApp-NT.bat.in → bin/UninstallApp-NT.bat
最終的なディレクトリ構成は以下の通り
ServiceWrapperSample bin springSample.jar wrapper.exe App.bat InstallApp-NT.bat UninstallApp-NT.bat lib wrapper.jar wrapper.dll conf wrapper.conf wrapper-license.conf logs
4.wrapper.confの修正
エントリクラスの設定
完全修飾子で指定
wrapper.app.parameter.1=spring.sample.SpringSample
サービス名の設定
以下を適当に設定
wrapper.name=SpringSample_servicename wrapper.displayname=SpringSample_dispname wrapper.description=SpringSample_description
5.動作確認
bin/App.batを実行
出力はlogs/wrapper.logに吐かれる
6.サービス化と解除
bin/InstallApp-NT.batを実行。
自分の環境では以下のメッセージが出力されたが、サービスには登録されていた。
Failed to write to console: ハ
サービス化の解除はbin/UninstallApp-NT.batを実行すればOK
その他Tips
Javaプログラム引数の追加
wrapper.app.parameter.2=spring-conf_test.xml
VM引数は以下
wrapper.java.additional.1=
Javaのヒープメモリ最大値設定(※これはVM引数に-Xmx指定するのと同じなのだろうか?)
wrapper.java.maxmemory=1024
なお、前回のjar出力方法で、以下のどちらでも上記の設定で動作した。
1.生成されるJARに必須ライブラリーを抽出 3.生成されるJARの隣のサブフォルダーに必須ライブラリーをコピー
3.については、bin以下にlibフォルダを追加し、エクスポート時と同じディレクトリ構成にした。
もしlibフォルダの場所を変える場合は、以下のようにwrapper.confにクラスパスを追加する事で対応できる。
wrapper.java.classpath.3=../lib/spring.jar wrapper.java.classpath.4=../lib/commons-logging.jar