CentOS6.5でCommon Daemonアプリのjsvc登録について

Commons Daemonを継承したスタンドアローンアプリを作成し
Windowsサービスへの登録と起動は簡単にできたんだけど
CentOSでなかなかデーモン登録(jsvc)できなかった。
苦戦したので、できた方法をメモ。

Commons Daemonは、Apache財団の保有するJavaライブラリ?です。
役割は、アプリをOSからデーモン起動できるようにするもの。
(Webアプリじゃなくてスタンドアローンなアプリ)

スタンドアローンアプリ

  • Commons Daemonをimplementsしたアプリを作成
  • eclipseで実行可能JARファイルで、生成されるJARに必須ライブラリを抽出のままエクスポート

CentOS

  • エクスポートしたjarをホームディレクトリに配置
  • JDKrpmをダウンロードしてきて、rpmインストール
#sudo rpm -ivh jdk-7u55-linux-x64.rpm
  • jsvcインストール
#sudo yum install jsvc

開始、停止

#/usr/bin/jsvc -user 今のユーザ -pidfile /home/ユーザ/app.pid -errfile /home/ユーザ/app.err -cp アプリ.jar jp.co.hoge.Class
#/usr/bin/jsvc -stop -user 今のユーザ -pidfile /home/ユーザ/app.pid -errfile /home/ユーザ/app.err -cp アプリ.jar jp.co.hoge.Class

はまりメモ

  • JAVA_PATHを通さないとjsvcが動かなかった。
  • jsvcコマンドはフルパスで指定しないとダメだった。
  • -errfileを指定しないと、うまく動いてるのかエラー発生してるのか確認のしようがなかった。
  • jsvcコマンドの最後がパッケージ&クラス名じゃないとだめだった。
  • -pidfileを指定しないと、デフォルトの場所じゃパーミッションエラーだよ!と怒られた。
  • -userオプションをつけないと動かなった。
  • jsvcをソースからビルドすると上手く動かず、yumインストールしたら上手く動いた。

と、色々はまりました。。。。