2012年4月4日水曜日

commons-daemon 第3回

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のはずだと思うのですが…

  1. set EXEC_DIR=%~dp0  
  2. echo %EXEC_DIR%  
  3. set CLASSPATH_DIR=%EXEC_DIR%lib  
  4. echo %CLASSPATH_DIR%  
  5. 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;  
  6. echo %CLASSPATH%  
  7. set JVM_PATH="C:\Program Files\Java\jdk1.6.0_31\jre\bin\server\jvm.dll"  
  8.   
  9. prunsrv //IS//TestService --DisplayName="Test Service" ^  
  10.         --Startup=auto ^ --Jvm=%JVM_PATH% --StartMode=jvm --StopMode=jvm ^  
  11.         --Classpath=%CLASSPATH% ^  
  12.         --StartClass=jp.tanakanbb.blogspot.daemon.service.sample.EngineLauncher --StartParams=start ^  
  13.         --StartMethod=windowsService ^  
  14.         --StopClass=jp.tanakanbb.blogspot.daemon.service.sample.EngineLauncher --StopParams=stop ^  
  15.         --StopMethod=windowsService ^  
  16.         --LogPath=%EXEC_DIR%logs --LogLevel=DEBUG ^  
  17.         --StdOutput=auto --StdError=auto ^  
  18.           
  19.           
  20.   
  21. pause  

サービスへの削除バッチ


  1. prunsrv //DS//TestService  
  2.   
  3. pause  

手順

install.batを実行すると、サービスに登録され、管理ツールからサービスを開いて、"Test Service"を開始すればサービスが始まります。
停止すれば止まります。
アンインストールは、uninstall.batです。

--Startup=autoだけど、install.batを実行しても開始されません...

追加で

commons-logging.properties

  1. org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger  
log4j.xmlはこんなかんじ。/var/log/daemon/application.logにログ出力します。

  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">  
  3.   
  4. <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>  
  5.   
  6.   <!-- ********************** 標準出力への出力 ********************** -->  
  7.   <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">  
  8.     <param name="threshold" value="info"/>  
  9.   
  10.     <!-- レイアウトの指定 -->  
  11.     <layout class="org.apache.log4j.PatternLayout">  
  12.       <param name="ConversionPattern"  
  13.              value=""%d{yyyy/MM/dd HH:mm:ss.SSS}",%p,%c,%M,%L,%m%n" />  
  14.     </layout>  
  15.   </appender>  
  16.   
  17.   <!-- ********************** ファイルへの出力 ********************** -->  
  18.   <appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">  
  19.     <param name="threshold" value="debug"/>  
  20.   
  21.     <!-- ファイル情報 -->  
  22.     <param name="file" value="/var/log/daemon/application.log" />  
  23.   
  24.     <param name="append" value="false" />  
  25.     <param name="datePattern" value="'.'yyyy-MM-dd" />  
  26.   
  27.     <!-- レイアウトの指定 -->  
  28.     <layout class="org.apache.log4j.PatternLayout">  
  29.       <param name="ConversionPattern"  
  30.              value=""%d{yyyy/MM/dd HH:mm:ss.SSS}",%p,%c,%M,%L,%m%n" />  
  31.     </layout>  
  32.   </appender>  
  33.   
  34.   <!-- ********************** category定義 ************************* -->  
  35.   <category name="jp.tanakanbb.blogspot">  
  36.     <priority value="debug" />  
  37.     <appender-ref ref="FILE" />  
  38.   </category>  
  39.   
  40.   <!-- ********************** root定義 ***************************** -->  
  41.   <root>  
  42.     <priority value="debug" />  
  43.     <appender-ref ref="STDOUT" />  
  44.   </root>  
  45.   
  46. </log4j:configuration>  

0 件のコメント:

コメントを投稿