World Map
Java Service Wrapperは、御社Javaアプリケーション製品の安定した信頼性を高める最短最善の方法です。
  • Free Trial
  • Buy Now
アプリケーションを起動する (Linux / UNIX)

アプリケーションを起動する (Linux / UNIX)

スクリプトをセットアップする

Wrapperにシェルスクリプト(sh)を同梱して提供しており、 それを使うことで、Java Service Wrapperでアプリケーションをコントロールし、 確実に開始したり停止したりすることができます。

まず始めに、Wrapperのディレクトリーにある、次のスクリプトを、 ご利用のアプリケーションの「bin」ディレクトリーにコピーしてください:

{WRAPPER_HOME}\src\bin\sh.script.in

以下のように、アプリケーション名を反映して、スクリプト・ファイル名を変更します。

/usr/lib/myapp/bin/myapp

次に、エディターで、そのスクリプトを開きます。 アプリケーションを起動する際のスクリプトで表示が反映されるように、 ロング名やショート名を設定が必要です。スクリプトのヘッダーの直後に、 2つの変数[APP_NAME]と[APP_LONG_NAME]が見えるでしょう。 この変数の推奨された値は次のとおりです。

APP_NAME="myapp"
APP_LONG_NAME="My Application"

このスクリプトは、何も設定変更を必要としませんが、 Wrapperの実行ファイルが同じディレクトリーにあり、かつ、 コンフィギュレーション・ファイル 「wrapper.conf」が 「conf」ディレクトリーにあるという前提で進めていきます。 もし、これらのファイルを他の場所に設置したい場合には、 そのスクリプト内の[WRAPPER_CONF]変数を変更する必要があります。

注意

重要! 処理を進める前に、 そのスクリプトやWrapperファイルが、 実行可能なビット・セットになっていることを確認してください。

注意

そのシェルスクリプト(sh)が 「/var/run」ディレクトリーの中に PIDファイルの作成を試みます。 もしWrapperを起動しているユーザーが、このディレクトリーに書き込む権限(パーミッション)がなかった場合、 結果としてエラーになるでしょう。 その代替え案として、Wrapper実行ファイルが配置されている同じディレクトリーに、 PIDファイルを書くことで、ほとんどのケースで動作するようになるはずです。 このように変更するためには、そのシェルスクリプト(sh)を開き、 次の行を変更してください:

PIDDIR="/var/run"

上記を以下のようにする:

PIDDIR="./"

コンソール内で動かす

アプリケーションを起動する:

単純に「bin/myapp console」を実行することで、 アプリケーションを動かすことができます。 Wrapperがカレント・ディレクトリーを設定してくれるお陰で、 「bin」ディレクトリー内部から、このスクリプトを実行する必要はありません。

/usr/lib/myapp/bin/myapp console
Running My Application...
wrapper  | --> Wrapper Started as Console
wrapper  | Launching a JVM...
jvm 1    | Wrapper (Version 3.x.x)
jvm 1    |

コンソール・コマンドを使って動かしている時、JVMからの出力は、そのコンソールに表示されます。

アプリケーションを終了する:

アプリケーションを終了するには、 コンソールコンソール(コマンド・ウィンドウ)から[CTRL]+[C]のキー操作で、アプリケーション任意停止します。 これで、アプリケーションはキレイにシャットダウンされます。

標準的なデーモン・スクリプト:

ご覧のとおり、コマンドを省略すると、 Wrapperに同梱して提供しているスクリプトは、極めて標準的なデーモン・スクリプトで、 [console], [start], [stop], [restart], [dump] コマンドを受け付ます。 [start], [stop], [restart] コマンドは、ほとんどのデーモン・スクリプトでは一般的なもので、 Wrapperや、デーモン・プロセスとしてのアプリケーションを、コントロールするために使われます。 [status] コマンドは、Wrapperが現在稼働中かどうか検知するために使われます。 [console] コマンドは、カレント・シェル内で、Wrapperを起動し、 [CTRL]+[C]のキー操作でアプリケーションを任意停止することを可能にします。 [dump] コマンドは、JVMにフルスレッド・ダンプをさせるように仕向けるために、 Wrapperへ「kill -3」シグナルを送ります。

アプリケーションをデーモン・プロセスの1つとして動かす

start]コマンドを使っているスクリプトを実行することで、 独立したデーモン・プロセスとして、アプリケーションを動かすことができます。

/usr/lib/myapp/bin/myapp start
Running My Application...

start]コマンドで動かしている時は、 「tail -f wrapper.log」を使い 「wrapper.log」ファイルを閲覧することで、 JVMからの出力を見ることができます。

アプリケーションが独立したプロセスとして動作しているため、 [CTRL]+[C]のキー操作でアプリケーション任意停止することはできず、 コンソール(コマンド・ウィンドウ)が閉じられた後でも、そのまま引き続き、動作を継続します。

アプリケーションをストップするには、 [stop]コマンドを使っているスクリプトを再始動します。

/usr/lib/myapp/bin/myapp stop
Stopping Test Wrapper Sample Application...
Stopped Test Wrapper Sample Application.

リブート(再起動)でスタートするようにアプリケーションをインストールする

Wrapperバージョン3.4.0で導入されたスクリプトで、Wrapper(そして最終的にご利用のアプリケーション) を埋め込む手法を提供しています。 そのスクリプトは自動的にご利用のOS(Linuxプラットフォームでディストリビューション)を検知して、 OSの初期化プロセスにWrapperスクリプトを組み込み必要なステップを実行します。

$ sudo bin/testwrapper install
[sudo] password for tanuki: 
Detected Ubuntu:
 Installing service testwrapper from current directory /home/tanuki/wrapper/bin
 Adding system startup for /etc/init.d/testwrapper ...
   /etc/rc0.d/K20testwrapper -> ../init.d/testwrapper
   /etc/rc1.d/K20testwrapper -> ../init.d/testwrapper
   /etc/rc6.d/K20testwrapper -> ../init.d/testwrapper
   /etc/rc2.d/S20testwrapper -> ../init.d/testwrapper
   /etc/rc3.d/S20testwrapper -> ../init.d/testwrapper
   /etc/rc4.d/S20testwrapper -> ../init.d/testwrapper
   /etc/rc5.d/S20testwrapper -> ../init.d/testwrapper

スクリプト自身がそのOSにインストールされるため、ルート・ユーザーとして、 インストール(またはアンインストール)オプションを動作させることが必要です。

freebsd や MacOSX ユーザーのために、スクリプトは デフォルト・コンフィギュレーション・ファイルを提供しており、ブート・プロセス中に どのように「launchd」や「initd」が スクリプトを取り扱うかをコントロールします。 ですが、コンフィギュレーション・ファイルを単に「bin」ディレクトリーに 置くことで、このステップをカスタマイズすることは可能です。 MacOSX用には、ファイル名を「{スクリプトのファイル名}.plist」にしなければなりません。 freebsd用には、「{スクリプトのファイル名}.install」です。 例えば、もしスクリプトが「testwrapper」とコールされた場合、 MacOSX上で「testwrapper.plist」を探すでしょうし、 freebsd上では「testwrapper.install」を探すでしょう。

Ubuntu や RedHat flavoured Linux ディストリビューションもまた 「Upstart」の利用をサポートしています。 デフォルトで、「init.d/rc.d」スクリプトが利用されます。 そのため、upstartへスイッチするためには、 Wrapperスクリプトを開いて変数「USE_UPSTART」を値に設定してください。

# flag for using upstart when installing (rather than init.d rc.d)
USE_UPSTART=true

パラメーター「install」を引き渡すスクリプトを呼び出す際に、 upstart サービスをインストールします。 デフォルトで、そのスクリプトは「Upstart」のコンフィギュレーション・ファイルを 「/etc/init/」に生成します。 しかしながら、かなり FreeBSD や MacOSと似ていますが、 自分で「Upstart」のコンフィギュレーション・ファイルを作成することもできます。 もしスクリプトが同じディレクトリーに 「{自分のスクリプトのファイル名}.install」ファイルを見つけられない場合、 そのファイルを「Upstart」コンフィギュレーション・ファイルとして利用します。

$ sudo bin/testwrapper install
[sudo] password for tanuki: 
Detected Ubuntu:
Installing the Test Wrapper Sample Application daemon using upstart..
creating default upstart conf file..

もしシステム初期化からWrapperのアンインストール(取り外し)を希望するならば、 アクション・パラメーター「remove」を渡して (ルート・ユーザーとして!)スクリプトを実行してください。 これで最初に動作しているWrapperアプリケーションを停止して、最後に初期化から取り外してキレイにします。

$ sudo bin/testwrapper remove
[sudo] password for tanuki: 
Stopping Test Wrapper Sample Application...
Stopped Test Wrapper Sample Application.
Detected Ubuntu:
 Removing service testwrapper from current directory /home/tanuki/wrapper/bin
 Removing any system startup links for /etc/init.d/testwrapper ...
   /etc/rc0.d/K20testwrapper
   /etc/rc1.d/K20testwrapper
   /etc/rc2.d/S20testwrapper
   /etc/rc3.d/S20testwrapper
   /etc/rc4.d/S20testwrapper
   /etc/rc5.d/S20testwrapper
   /etc/rc6.d/K20testwrapper

Wrapperバージョン3.4.0より以前の古いバージョンをインストールすると、手動で操作しなければなりません。 もし、該当するプラットフォームがない場合でも、とりあえず一通り読んで、必要に応じて適用してください。 何か新しい発見があったら、 wrapper-user@lists.sourceforge.net メーリングリスト宛てに、是非ご一報ください。 次回の公開リリース版に追加できれば嬉しく思います。

直接「wrapper」ファイルを使う

Java Service Wrapperから提供されているスクリプトを使う代わりに、 直接、Wrapperを起動することを選ぶこともできます。 もし、何もパラメーターがない状態で 「wrapper」ファイルを実行すると、 以下のように、使い方の出力が表示されます。

/usr/lib/myapp/bin/wrapper
Wrapper (Version 3.n.n) http://wrapper.tanukisoftware.org

Usage:
  wrapper <command> <configuration file> [configuration properties] [...]
  wrapper <configuration file> [configuration properties] [...]
     (<command> implicitly '-c')
  wrapper <command>
     (<configuration file> implicitly 'wrapper.conf')
  wrapper
     (<command> implicitly '-c' and <configuration file> 'wrapper.conf')

where <command> can be one of:
  -c  --console run as a Console application
  -?  --help    print this help message

<configuration file> is the wrapper.conf to use.  Name must be absolute or relative
  to the location of wrapper

[configuration properties] are configuration name-value pairs which override values
  in wrapper.conf.  For example:
  wrapper.debug=TRUE

シェルとしてWrapperを動かすために、 「wrapper.conf」ファイルに続いて、 [-c]コマンドを指定する必要があります。 「wrapper.conf」ファイルの配置場所は、 絶対パスか相対パスで設定することができます。 もし、相対パスが利用されている場合、そのパスは、カレント・ディレクトリーではなく、 常に「wrapper」ファイル場所への相対参照です。

/usr/lib/myapp/bin/wrapper -c ..\conf\wrapper.conf

アプリケーションをデーモン・プロセスとして起動するためには、 以下のコマンドを実行します(シェルスクリプトの利用をお薦めします):

/usr/lib/myapp/bin/wrapper -c ..\conf\wrapper.conf wrapper.daemonize=TRUE