JavaServiceで普通のJavaアプリをWindowsサービスに

サーバ的な動作をするJavaアプリケーションをWindowsで動かす場合、通常のJavaアプリとして起動してしまうと、ユーザがログアウトした時点で終了してしまう。
OW2 - GForge has been discontinued (IT_Infrastructure.GForge_discontinued)

は、javaアプリケーションをWindowsサービスとして動作して、ユーザがログアウトした後でも動きつづけるようにしてくれる。

ちょっとだけ注意する点として、

  • JavaService.exeは%JAVA_HOME%\jre\bin\server\jvm.dllを利用する。
  • クラスパスの指定はjava.exeのオプションのように"-cp"で指定するのではなく"-Djava.class.path="で指定する。
  • サービス化したいJavaアプリの引数(通常は起動するクラスのあとに列挙する引数)は"-params"以降にスペース切りで列挙する。


一般のアプリケーション(exeファイル)をWindowsサービス化する方法はsexe
http://www.nanshiki.co.jp/free/index.html
Windows Server 2003 リソースキットのinstsrv.exe, srvany.exeを利用する方法
Download Windows Server 2003 Resource Kit Tools from Official Microsoft Download Center
(参考:@IT:Windows TIPS -- Hints:Windows OS向けリソースキット・ツールを入手する)
などあるが、JavaServiceのアドバンテージとして、

  • 起動するときに、数十項目(数百文字)を超える大量のシステムプロパティを設定するようなJavaアプリでも、問題ない
  • 標準出力と標準エラーをログファイルを出力することができる
  • 停止するときに呼ぶべきクラスとメソッドまで指定できる

などがある。JavaアプリをWindowsサービス化するにはこれしかない。