Windowsでのサービス登録方法
公式ページを参考にしてもどうにも動かないので、ちょっと頑張りが必要でした。
公式ページ →
Daemon: Procrun
jarの作成
前回作成したJavaをJarにします。
ここでは面倒なので、Eclipseのエクスポート機能を使います。
成果物:EngineLauncher.jar
場所
とりあず、C:\tmp\test-serviceを作ります。
で、libフォルダにcommons-daemon-1.0.10.jar、commons-logging-1.1.1.jar、log4j-1.2.16.jarを入れ
logsフォルダも作っておきます。
あと、commons-daemon-1.0.10-bin-windows.zipをダウンロードしてあるはずなので、
その中にあるprunsrv.exeもC:\tmp\test-serviceに入れておきます。
C:\tmp\test-service
│ EngineLauncher.jar
│ install.bat
│ prunsrv.exe
│ uninstall.bat
│
├─lib
│ commons-daemon-1.0.10.jar
│ commons-logging-1.1.1.jar
│ log4j-1.2.16.jar
│
└─logs
commons-daemon.2012-04-04.log
testservice-stderr.2012-04-04.log
testservice-stdout.2012-04-04.log
サービスへの登録バッチ
--Jvmオプションでjvm.dllの場所を指定するのですが、autoでうまく動かず、直接指定しました。autoのはずだと思うのですが…
- set EXEC_DIR=%~dp0
- echo %EXEC_DIR%
- set CLASSPATH_DIR=%EXEC_DIR%lib
- echo %CLASSPATH_DIR%
- set CLASSPATH=%EXEC_DIR%EngineLauncher.jar;%CLASSPATH_DIR%\commons-daemon-1.0.10.jar;%CLASSPATH_DIR%\commons-logging-1.1.1.jar;%CLASSPATH_DIR%\log4j-1.2.16.jar;
- echo %CLASSPATH%
- set JVM_PATH="C:\Program Files\Java\jdk1.6.0_31\jre\bin\server\jvm.dll"
-
- prunsrv //IS//TestService --DisplayName="Test Service" ^
- --Startup=auto ^ --Jvm=%JVM_PATH% --StartMode=jvm --StopMode=jvm ^
- --Classpath=%CLASSPATH% ^
- --StartClass=jp.tanakanbb.blogspot.daemon.service.sample.EngineLauncher --StartParams=start ^
- --StartMethod=windowsService ^
- --StopClass=jp.tanakanbb.blogspot.daemon.service.sample.EngineLauncher --StopParams=stop ^
- --StopMethod=windowsService ^
- --LogPath=%EXEC_DIR%logs --LogLevel=DEBUG ^
- --StdOutput=auto --StdError=auto ^
-
-
-
- pause
サービスへの削除バッチ
- prunsrv //DS//TestService
-
- pause
手順
install.batを実行すると、サービスに登録され、管理ツールからサービスを開いて、"Test Service"を開始すればサービスが始まります。
停止すれば止まります。
アンインストールは、uninstall.batです。
--Startup=autoだけど、install.batを実行しても開始されません...
追加で
commons-logging.properties
- org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
log4j.xmlはこんなかんじ。/var/log/daemon/application.logにログ出力します。
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
-
- <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
-
-
- <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
- <param name="threshold" value="info"/>
-
-
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern"
- value=""%d{yyyy/MM/dd HH:mm:ss.SSS}",%p,%c,%M,%L,%m%n" />
- </layout>
- </appender>
-
-
- <appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
- <param name="threshold" value="debug"/>
-
-
- <param name="file" value="/var/log/daemon/application.log" />
-
- <param name="append" value="false" />
- <param name="datePattern" value="'.'yyyy-MM-dd" />
-
-
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern"
- value=""%d{yyyy/MM/dd HH:mm:ss.SSS}",%p,%c,%M,%L,%m%n" />
- </layout>
- </appender>
-
-
- <category name="jp.tanakanbb.blogspot">
- <priority value="debug" />
- <appender-ref ref="FILE" />
- </category>
-
-
- <root>
- <priority value="debug" />
- <appender-ref ref="STDOUT" />
- </root>
-
- </log4j:configuration>