方法4は、アプリケーションの起動に[WrapperJarApp]ヘルパークラスを使う手法です。 これもまたシンプルなWrapper統合方法で、アプリケーションの設定が既に完了していて、 実行可能な「jar」ファイルの準備が整っている場合にご利用いただけます。
この方法を利用するにおいて理解しておくべき点がいくつかあります。 WrapperがJVM(Javaバーチャルマシン)をシャットダウンする際に、直接アプリケーションへシャットダウンをリクエストするわけではなく、 JVM内部から[System.exit()]メソッドを呼び出してJVMのシャットダウン・シーケンスに入ります。 もし、アプリケーションが シャットダウン・フック に登録されている場合、 通常どおりに実行処理され、アプリケーションがキレイにシャットダウンできる時間を確保します。 その一方、もしシャットダウン・フックに登録されていない場合、 コンソール(コマンド・ウィンドウ)から[CTRL]+[C]のキー操作によるアプリケーション任意停止と同じように動作し、 アプリケーションを直ちに終了させます。シャットダウン・フックの有無に関わらず、 いずれのケースでも、Wrapper導入前の環境状態と同じように動作します。
この方法4([WrapperJarApp]ヘルパークラス)でインテグレーションすると、 [WrapperJarApp]クラスがアプリケーションのメイン・クラスを置き換えます。 これにより、[WrapperJarApp]クラスが、 即時にWrapperManagerを初期化する機会を持つことができ、 JVM(Javaバーチャルマシン)をWrapperに登録します。 [WrapperJarApp]クラスは、アプリケーションのライフサイクル(稼働状況)はもちろんのこと、 Wrapperとの全ての対話を管理します。 WrapperManager経由でWrapperがスタート・メッセージをJVMに送ると、 「jar」の目録が詳しく調査され、変更されたメイン・クラスが呼び出されます。 [WrapperJarApp]が新しく「ClassLoader」を作成し、 その目録を参照しているその他の「jar」ファイルも同様に、 実行可能な「jar」ファイルクラスをロード(読み込み)することができるようになります。
実行可能な「jar」ファイルの相対参照/絶対参照を引き渡すことで、 どのようにアプリケーションを起動するのか、 [WrapperJarApp]ヘルパークラスへ指示が渡され、 [WrapperJarApp]のメイン・メソッドへ その他の追加的なアプリケーション・パラメーターが続き、進んでいきます。
このセクションでは、さらに詳細に踏み込み、Wrapper内でアプリケーションを動かすためにはどうするのか、 Hudson設定方法を例にあげて説明します。 実行可能な「jar」ファイルとしてデプロイされている、 ほとんどのアプリケーションでは、同様の手順でインテグレーションすることができます。
ここでの解説は、Hudsonのクリーン・インストールから進める手順で説明します。 ここでは「Hudsonバージョン1.285」を利用していますが、 バージョンの違いなどにより手順が部分的に異なる場合があります。 Hudsonは、「hudson.war」というファイル名でデプロイされています。 これで、ウェブ・アプリケーションとしてデプロイされることを可能にさせますが、 実行可能な「jar」ファイルになっています。 Hudsonは「D:\Hudson」ディレクトリーにインストールされています。 「bin」 「lib」 「conf」 「logs」の各ディレクトリーを作成して、 「lib」ディレクトリー内に [hudson.war]ファイルを置いてください。
Wrapperを使えるようにするために4つのディレクトリーを操作する必要があります。
まず始めに、以下のファイルをHudson の「bin」ディレクトリーにコピーしてください:
{WRAPPER_HOME}\bin\wrapper.exe {WRAPPER_HOME}\src\bin\App.bat.in {WRAPPER_HOME}\src\bin\InstallApp-NT.bat.in {WRAPPER_HOME}\src\bin\UninstallApp-NT.bat.in
以下のように、アプリケーション名を反映して、3つのバッチファイル名を変更します。 拡張子「.in」を外して、 ファイルの拡張子が「.bat」で終わるように変更してください。
なお、ご利用のコンピューターの設定状況によっては、拡張子が見えない場合がありますので、 拡張子が表示されるよう事前に設定を変更する必要があるかもしれません。
以下のようになるはずです:
{HUDSON_HOME}\bin\Hudson.bat {HUDSON_HOME}\bin\InstallHudson-NT.bat {HUDSON_HOME}\bin\UninstallHudson-NT.bat
「wrapper.exe」ファイルは、実際のWrapper実行ファイルです。 3つのバッチファイルは、コンソールでHudsonを動かすために使われ、 HudsonをWindowsサービスの1つとしてインストールやアンインストールしたりすることができます。
これらのバッチファイルは、何も設定変更を必要としませんが、コンフィギュレーション・ファイル 「wrapper.conf」が 「conf」ディレクトリーにあるという前提で進めていきます。 もし、その「wrapper.conf」ファイルを他の場所に設置したい場合には、 この3つのバッチファイルの設定を適切に変更する必要があります。
以下の2つのファイルをHudsonの「lib」ディレクトリーにコピーしてください:
{WRAPPER_HOME}\lib\wrapper.dll {WRAPPER_HOME}\lib\wrapper.jar
「wrapper.dll」ファイルは、 ネイティブ・ライブラリー・ファイルであり、 JVM内で動作するWrapperの一部として必要なものです。 「wrapper.jar」ファイルには、全てのWrapperクラスが含まれています。
Wrapperでは各アプリケーション用の設定ファイル(コンフィギュレーション・ファイル 「wrapper.conf」)が必要です。 その設定ファイルの標準配置ディレクトリーは、 アプリケーション・ホーム・ディレクトリー下の「conf」ディレクトリーです。 以下の設定ファイル・テンプレート「wrapper.conf.in」を Hudsonの「conf」ディレクトリーにコピーしてください:
{WRAPPER_HOME}\src\conf\wrapper.conf.in
次のようにファイル名を変更します。 拡張子「.in」を外して、 ファイル名を「wrapper.conf」へ変更します。
{JBOSS_HOME}\conf\wrapper.conf
もしコンフィギュレーション・ファイル「wrapper.conf」 の配置場所を変更したい場合には、自由に変更して構いませんが、新しい場所が反映されるように、 上記の「bin」ディレクトリーの中に コピーしたバッチファイルを変更する必要があります。
コンフィギュレーション・ファイル 「wrapper.conf」 のデフォルトでは、アプリケーション・ホーム・ディレクトリー下にある 「logs」ディレクトリーの中に 「wrapper.log」ファイルを配置します。 以下のようになるはずです:
{HUDSON_HOME}/logs
もし「wrapper.log」ファイルを他の場所に配置したい場合には、 「wrapper.conf」ファイルを編集して、新しい場所が反映されるように [wrapper.logfile] プロパティを変更する必要があります。
実行可能な「jar」ファイルの場合、Java コマンドラインはシンプルです。 Hudsonの場合、「Hudson」ディレクトリーに移動して実行します:
java -jar C:\Hudson\lib\hudson.war
引数があれば、下記のように引き渡します: (『arg』とは「argument」の略で「引数」の意味です)
java -jar C:\Hudson\lib\hudson.war arg1 arg2 arg3
もし、上記のコマンドラインをWrapperで使うためには、そのコマンドラインのコンポーネントを細分化して、 コンフィギュレーション・ファイルへ落とし込んでいく必要があります。 「wrapper.conf」 ファイルをエディターで開き、下記のようにプロパティに変更を加えてください。
注意
下記の文中で説明しているプロパティについて、そのリンク先では、それぞれ詳しい説明を提供しています。 じっくり時間をかけて、変更するプロパティの説明を全部、熟読してください。 多くのケースでは、ここでは触れていない事項についても、さらに詳しい使い方の説明があります。
まず、Java実行ファイルを解凍して、その配置場所のパスを [wrapper.java.command] プロパティにへ割り当てます:
wrapper.java.command=java
次にクラスパスです。[ wrapper.java.classpath.<n> ]プロパティを使って設定を変更します。 本来Javaでは、[-jar]パラメーターを使って動作する際に、 クラスパスを指定することは認められませんが、 このWrapperインテグレーションでは少し異なった手法になります。 Wrapperでは、その「wrapper.jar」ファイルをクラスパスの中に指定する必要があります:
wrapper.java.classpath.1=C:\Hudson\lib\wrapper.jar
Wrapper や [WrapperJarApp]ヘルパークラスを使う際に、 Javaは「jar」ファイルを直接的に実行しません。 アプリケーションのメイン・クラスとして、ヘルパークラスを指定する必要があります。 起動時にJavaによって実行されるこのメイン・クラスは、 [wrapper.java.mainclass] プロパティを使って指定します。
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperJarApp
アプリケーション・パラメーターは、[ wrapper.app-parameter.<n> ]プロパティを使って設定します。 ここでのケースでは、 Hudsonを起動させるコマンドラインは、 アプリケーション・パラメーターを何も指定していませんが、 [WrapperJarApp]ヘルパークラスに、どの「jar」ファイルを実行させるのか伝える必要があります。 下記のように設定します:
wrapper.app.parameter.1=C:\Hudson\lib\hudson.war
Wrapperを使うために、設定しなければならないプロパティがもう一つあります。 システムとの対話をコントロールするため、Wrapperは、ネイティブ・ライブラリーを利用します。 このライブラリー・ファイル 「wrapper.dll」は、 JVMへ供給されるライブラリーパスで指定しておく必要があります。 Hudson では、ネイティブ・ライブラリーを一切持ちません、 仮にあったとしても、 それがどこに位置するのかライブラリーの 配置場所(ディレクトリー)を指定しておく必要があるでしょう。 ライブラリーパスは、[ wrapper.java-library-path.<n> ]プロパティを使って設定します。
wrapper.java.library.path.1=C:\Hudson\lib
全部をまとめると、下記のようになります:
wrapper.java.command=java wrapper.java.classpath.1=C:\Hudson\lib\wrapper.jar wrapper.java.library.path.1=C:\Hudson\lib wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperJarApp wrapper.app.parameter.1=C:\Hudson\lib\hudson.war
これらの設定をしたマシンが正常に動作していることからも分かるように、 ディレクトリー構造やプラットフォームに非常に高く依存しています。 Wrapperが作業ディレクトリーを常に 「wrapper.exe」ファイルが 存在する場所に設定するという仕組みの利点を生かし、 また、シングル環境変数を利用することにより、上記のプロパティを変更することができるので、 プラットフォームやマシンが完全に独立する状態となりえるのです:
wrapper.java.command=%JAVA_HOME%/bin/java wrapper.java.classpath.1=../lib/wrapper.jar wrapper.java.library.path.1=../lib wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperJarApp wrapper.app.parameter.1=../lib/hudson.war
(参照:サポートされているWindowsバージョン)
最後のステップでは、[ Windows サービス・プロパティ ]の設定です。 ここでは変更すべきプロパティだけを取り上げます。 他にもいくつか有効なことはありますので、詳しくはそれぞれの使い方の説明を参照してください。 この変数の推奨された値は以下のとおりです。
wrapper.ntservice.name=Hudson wrapper.ntservice.displayname=Hudson Integration Engine wrapper.ntservice.description=Hudson Integration Engine
ここまで来れば、単純に 「bin\Hudson.bat」バッチファイルを実行することで Hudsonを動かすことができます。 Wrapperがカレント・ディレクトリーを設定してくれるお陰で、 「bin」ディレクトリー内部から、このバッチファイルを実行する必要はありません。 アプリケーションをサービスの一つとして動かしてみる前に、 コンソール・アプリケーションとして動かしてみて、設定が有効になっているか確認してください。
Hudsonを起動すると最初に、カレント・ユーザー・ホーム・ディレクトリーの中に、 コンフィギュレーション・ファイル 「wrapper.conf」が作成されます。 これは、コンソール・ウィンドウで動作している時と、サービスとして動作している時と、 それぞれ作成場所が異なることが多いので注意してください。
おめでとう!あなたのアプリケーションが起動して動き始めるはずです。
もし何か問題があった場合、トラブルシューティングをご覧いただき、 問題点を追究するのに役立つことでしょう。
If you notice something that is incorrect, missing, or simply feel that some part of this page could be explained better, feel free to log in and add a comment. You will need to register before you can log on.