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

インデックス

  • 環境変数の展開
  • 環境変数の定義
    • set.変数名
    • set.default.変数名
  • デフォルト環境変数の定義
    • [WRAPPER_ARCH]変数
    • [WRAPPER_BIN_DIR]変数
    • [WRAPPER_BITS]変数
    • [WRAPPER_CONF_DIR]変数
    • [WRAPPER_FILE_SEPARATOR]変数
    • [WRAPPER_HOSTNAME]変数
    • [WRAPPER_INIT_DIR]変数
    • [WRAPPER_JAVA_HOME]変数
    • [WRAPPER_LANG]変数
    • [WRAPPER_OS]変数
    • [WRAPPER_PATH_SEPARATOR]変数
    • [WRAPPER_PID]変数
    • [WRAPPER_RAND_NNNNNN]変数
    • [WRAPPER_TIME_YYYYMMDDHHIISS]変数
    • [WRAPPER_WORKING_DIR]変数
  • イベントハンドラ変数の定義
    • [WRAPPER_NAME]変数
    • [WRAPPER_DISPLAYNAME]変数
    • [WRAPPER_DESCRIPTION]変数
    • [WRAPPER_EVENT_JVM_ID]変数
    • [WRAPPER_EVENT_JVM_PID]変数
    • [WRAPPER_EVENT_NAME]変数
    • [WRAPPER_EVENT_WRAPPER_PID]変数

環境変数の展開

Wrapperは、いかなるプロパティ値でもランタイム時に、環境変数の展開をサポートしています。 コンフィギュレーション・ファイル 「wrapper.conf」の本質を活かし、 プラットフォームに依存しない独立型を意識して整備しておけば、 Windowsのシンタックス(構造文法ルール)は、全てのプラットフォームに利用することができます。

Wrapperが1つのサービスとして動かされる時、環境からではなく、 システム・レジストリから環境変数がロード(読み込み)されます。 これは、Windowsがマシン起動するときに、サービスを有効にする環境変数をロード(読み込み)するために必要です。 レジストリにあるシステム環境変数が変更(コントロール・パネルと通しての変更や、あるいは直に設定の変更)された場合、 マシンを再起動するまでサービスが有効になりませんが、 レジストリから環境変数をロード(読み込み)することで、同じ機能を提供している間は、再起動の必要性を避けることができます。

JAVA_HOME]環境変を参照している例:
wrapper.java.command=%JAVA_HOME%/bin/java

これは、[JAVA_HOME]環境変数を定義する、 いかなるシステム上においても、完全に適切なパスへ、ランタイムで展開します。

Windowsで、[JAVA_HOME]:
wrapper.java.command=C:\Sun\jdk1.3\bin\java
UNIXで、[JAVA_HOME]:
wrapper.java.command=/opt/IBMJava2-131/bin/java

注意

もし参照された環境変数が定義されていない場合、プロパティ値では展開されずに、そのままの状態で解釈されます。

環境変数の定義

Wrapperは、コンフィギュレーション・ファイル 「wrapper.conf」 内部から、あるいは、 コマンドラインから、環境変数を定義する能力を備えています。 一旦、定義されれば、その環境変数は他の環境変数と同様に参照が可能です。 これは、上記で述べている変数の展開での利用も含みます。

特別なプロパティ名「set.」「set.default.」:

環境変数は、冒頭に[set.] や[set.default.]で始まる 環境変数名を持つ特別なプロパティ名を使って定義されます。 新しい環境変数の値がプロパティ値に設定されます。

set.EXTERN_APP=C:/ExternAppHome

もし、[set.default.]で始まる変数名を使うと、 その環境変数はまだ存在していない場合の時だけ、作成されます。 これはシリーズ化した環境変数のデフォルト値を定義するときに便利です。

set.default.EXTERN_APP=C:/ExternAppHome

設定例:

環境変数を定義する能力のお陰で、コンフィギュレーション・ファイルを介して利用される 値を簡単に変更することが可能になります。 以下の例では、外部アプリケーションの配置場所を特定するために、 環境変数の使用方法を示しています。

set.EXTERN_APP=C:/ExternAppHome

wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=%EXTERN_APP%/lib/jar1.jar
wrapper.java.classpath.3=%EXTERN_APP%/lib/jar2.jar
wrapper.java.classpath.4=%EXTERN_APP%/lib/ext/jar3.jar
wrapper.java.classpath.5=%EXTERN_APP%/lib/ext/jar4.jar

環境変数の定義を利用は、いつ、どのように、値を変更すれば良いのか理解していれば、とてもパワフルです。 Wrapperが起動される前に設定する環境変数は、 もちろん、通常どおりに使うことができます。 もしコンフィギュレーション・ファイルに同じ変数名が指定されている場合には、 コンフィギュレーション・ファイルの値は、既存の値を上書きします。

コマンドラインによる変数定義:

コマンドラインから定義された環境変数は、少し異なる形で動作します。 システムからの値、あるいは、コンフィギュレーション・ファイルで設定された値など、いかなる値も上書きされ、 コマンドラインからの値が有効になります。 コンフィギュレーション・ファイル 「wrapper.conf」 内部のデフォルト環境変数を定義しつつも、 さらにコマンドラインからその値を書き換えることが可能になります。

Windowsでのコマンドライン:(注意:プロパティ値にふペースが含まれている)
wrapper.exe -c ..\conf\wrapper.conf "set.EXTERN_APP=C:\Program Files\ExternAppHome"
UNIXでのコマンドライン:
wrapper ../conf/wrapper.conf set.EXTERN_APP=/usr/lib/externapphome

注意

コマンドラインから利用する際には、プロパティ値にスペース(空白)を含んでいる場合、 プロパティ・セット(プロパティ名とその値)の全体を値を、開始と終わりの引用符(“ ”)で囲ってください。

デフォルト環境変数の定義

Wrapperの起動時に、次の環境変数を設定します。 これらの変数は、コンフィギュレーション・ファイル 「wrapper.conf」 内部で使われたり、JVMの環境へアクセス、あるいは、そのチャイルド(子)プロセスへアクセスしたりして使われます。

  • WRAPPER_ARCH]変数には、 現在動作中のWrapperのビルドされた構造名が設定されます。 (ver. 3.3.0から)

  • WRAPPER_BIN_DIR]変数には、 スタートアップ時にWrapperバイナリの配置場所が設定されます。 たとえカレント作業ディレクトリーが変更されていたとしても、それとは関係なく、 その場所への相対パスを定義するために使われます。 (ver. 3.3.0から)

  • WRAPPER_BITS]変数には、 現在動作中のWrapperのビルドされた、32ビットや64ビットの深さが設定されます。 (ver. 3.3.0から)

  • WRAPPER_FILE_SEPARATOR]変数には、 ファイル・セパレーターとして、Windows上で「\」、 Linux/UNIXプラットフォーム上で「/」が設定されます。 その変数は、追加の環境変数やプロパティのために、 プラットフォームに依存しない独立型の値を設定するために利用されます。 (ver. 3.1.0から)

    一般的に、安全をみて、 Java内部で使われるパスのファイル・セパレーターとして、 常に「/(スラッシュ)」を使うことをお薦めします。 Javaでは、「/」 を使えば、全てのプラットフォーム上で正しく動くように設計されています。

  • WRAPPER_HOSTNAME]変数と [WRAPPER_HOST_NAME]変数には、 Wrapperが現在動作しているマシンの解決した名前が設定されます。 (WRAPPER_HOST_NAMEver. 3.3.2から, WRAPPER_HOSTNAMEver. 3.3.6から)

  • WRAPPER_INIT_DIR]変数には、 Wrapperプロセスを起動するプロセスの作業ディレクトリーが設定されます。 Wrapperは常に最初に、コンフィギュレーション・ファイルの読み込み中、 作業ディレクトリーをWrapperバイナリがある場所に強制設定します。 (参照:WRAPPER_BIN_DIR変数) その後、もしユーザーが他の作業ディレクトリーを設定していた場合、 [wrapper.working.dir] プロパティで指定された場所へ変更されます。 これは、どこからWrapperが起動されたかに関わらず、 与えられたコンフィギュレーションを100%信頼して、 確実にWrapperが動作することを実現させるために必要です。 一部のアプリケーションでは、Wrapperを起動する時、ユーザーがどこに居るのか知る必要があります。 そのようなケースで、この変数が利用されます。 (ver. 3.5.6から)

    設定例:
    wrapper.java.additional.1=-Dinit.dir="%WRAPPER_INIT_DIR%"
    wrapper.java.additional.1.stripquotes=TRUE
  • WRAPPER_JAVA_HOME]変数には、 システム・レジストリを使ってJavaコマンドが配置される時、Windowsプラットフォーム上で、設定されます。 その他のケースでは、[JAVA_HOME]変数を設定することをお薦めします。 (ver. 3.3.0から)

  • WRAPPER_LANG]変数には、 Wrapperで利用する言語が設定されます。その言語用に、値をローカライズした コンフィギュレーション・ファイル の一部として含めることができます。 (ver. 3.5.5から)

    次の例では、Windowsサービス表示や説明をローカライズする方法を示しています。 最初に、確実に英語が常にロード(読み込み)されます(最初に英語プロパティが定義されるはず)ことに注目してください。 これは、英語の値がデフォルトとして存在することを明確にするためです。 その後、Wrapperは、その英語の値をローカライズされた インクルード・ファイル(カスケード形式)の値で上書きします。

    例 (wrapper.conf):
    #encoding=UTF-8
    #include ../conf/wrapper-en.conf
    #include ../conf/wrapper-%WRAPPER_LANG%.conf
    ...
    wrapper.ntservice.name=myapp
    ...
    
    例 (wrapper-en.conf):
    #encoding=UTF-8
    wrapper.ntservice.displayname=My App Server
    wrapper.ntservice.description=Application Server that does cool stuff.
    例 (wrapper-de.conf):
    #encoding=UTF-8
    wrapper.ntservice.displayname=My App Server
    wrapper.ntservice.description=Application Server that does cool stuff.
  • WRAPPER_OS]変数には、 現在Wrapperが動作しているOS名が設定されます。 (ver. 3.3.0から)

    設定例:
    wrapper.java.library.path.1=../lib
    wrapper.java.library.path.2=../lib/native/%WRAPPER_OS%-%WRAPPER_ARCH%-%WRAPPER_BITS%

    上記の例では、以下のように解決されます:

    Windows:
    wrapper.java.library.path.1=../lib
    wrapper.java.library.path.2=../lib/native/windows-x86-32
    Linux:
    wrapper.java.library.path.1=../lib
    wrapper.java.library.path.2=../lib/native/linux-x86-32
    Solaris:
    wrapper.java.library.path.1=../lib
    wrapper.java.library.path.2=../lib/native/solaris-sparc-32
  • WRAPPER_PATH_SEPARATOR]変数には、 Windows上で「;」、 Linux/UNIXプラットフォーム上で、「:」が設定されます。 この変数は、プラットフォームに依存しない独立型のパスをビルドするために使われます。 (ver. 3.1.0から)

    設定例:
    set.PATH=..%WRAPPER_FILE_SEPARATOR%lib%WRAPPER_PATH_SEPARATOR%%PATH%

    上記の例では、以下のように解決されます:

    Windows:
    set.PATH=..\lib;%PATH%
    UNIX:
    set.PATH=../lib:%PATH%
  • WRAPPER_PID]変数には、 起動時に、WrapperプロセスのPIDが設定されます。 同じコンフィギュレーション・ファイルを使って複数のアプリケーションを起動するときに、 固有のファイル名を取得していることを確認するために、 PIDファイルログファイルのようなファイル名の中で使われます。 (ver. 3.3.7から)

    設定例:
    wrapper.logfile=../logs/wrapper-%WRAPPER_PID%.log
  • WRAPPER_RAND_NNNNNN]変数には、 Wrapper コンフィギュレーション・ファイル内部で使われる各配置場所で、ランダムな数字が設定されます。 (ver. 3.3.4から)

    wrapper.app.parameter.1=mytempfile-%WRAPPER_RAND_NNNNNN%.txt

    一旦、コンフィギュレーション・ファイルがロード(読み込み)されて、その内容が取り込まれ解釈される時、この値が設定されます。 もし、JVMの起動毎に、この値が設定されるべきならば、 コンフィギュレーション・ファイルが、各JVMの「起動の試み(invocation)」よりも前に再読み込みされるように、 [wrapper.restart.reload_configuration=TRUE] コンフィギュレーション・プロパティを指定する必要があります。

    変数が指定されている、それぞれの場所で、異なるランダムな数字が1つ生成されます。 もし、複数の配置場所で、同じランダムな数字を参照することが必要ならば、 まず、ローカル変数の中に値を保存して、必要に応じて参照するようにしてください。 例:

    set.RNUM=%WRAPPER_RAND_NNNNNN%
    wrapper.java.additional.1=-Dtempid=%RNUM%
    wrapper.app.parameter.1=mytempfile-%RNUM%.txt
    

    さらに、追加的な形式として、1桁から6桁のランダムな数字で存在します: [WRAPPER_RAND_N], [WRAPPER_RAND_NN], [WRAPPER_RAND_NNN], [WRAPPER_RAND_NNNN], [WRAPPER_RAND_NNNNN

  • WRAPPER_TIME_YYYYMMDDHHIISS]変数には、 Wrapper コンフィギュレーション・ファイル内部で使われる各配置場所で、タイムスタンプが設定されます。 返される時間は、コンフィギュレーション ファイルがロード(読み込み)された時間です。 同じコンフィギュレーション・ファイルの中で、複数回の参照があったとき、 その変数は、その同じ値を返します。 (ver. 3.3.4から)

    下記の例では、 どのようにタイムスタンプを引用したファイル名を生成し、JVMへ引き渡す実例です:

    wrapper.app.parameter.1=mytempfile-%WRAPPER_TIME_YYYYMMDDHHIISS%.txt

    上記の例では、結果として、以下のような値になります:

    wrapper.app.parameter.1=mytempfile-20090409124532.txt

    一旦、コンフィギュレーション・ファイルがロード(読み込み)されて、その内容が取り込まれ解釈される時、この値が設定されます。 もし、JVMの起動毎に、この値が設定されるべきならば、 コンフィギュレーション・ファイルが、各JVMの「起動の試み(invocation)」よりも前に再読み込みされるように、 [wrapper.restart.reload_configuration=TRUE] コンフィギュレーション・プロパティを指定することが必要です。

    さらに、追加的な形式として、参照されるもの: [WRAPPER_TIME_YYYYMMDD_HHIISS], [WRAPPER_TIME_YYYYMMDDHHII], [WRAPPER_TIME_YYYYMMDDHH], [WRAPPER_TIME_YYYYMMDD

  • WRAPPER_WORKING_DIR]変数は、 スタートアップ時にWrapperバイナリの配置場所が設定されますが、 チャイルド(子)プロセスによって参照されるとき、 Wrapperのカレント作業ディレクトリーを反映して変更されます。 (ver. 3.3.0から)

    Wrapperの作業ディレクトリーは、 [wrapper.working.dir]プロパティを使って変更することができます。 その使い方は少しヤヤコシイので必ず説明を読んでください。

    しかしながら、このプロパティが設定されるこの方法ゆえに、次の点に注目してください。 Wrapperコンフィギュレーション・ファイル内で参照されるとき、 それは常に[WRAPPER_BIN_DIR]変数と同等です。 この変数は、環境内部で正確に設定されますが、どのチャイルド(子)プロセスも、 [wrapper.working.dir] プロパティで設定されたディレクトリーを参照します。

イベントハンドラ変数の定義

上記の環境変数に加え、イベントが発生するとき、 イベント・プロパティの中で、以下の変数も参照されます。 この変数の値は、プロパティ内で定義されたイベント・プロパティによって参照されます。 この変数は、実際には、真実の環境変数として設定されていません。

  • WRAPPER_NAME]変数には、 [wrapper.name]プロパティの値が設定されます。 (ver. 3.3.0から)

  • WRAPPER_DISPLAYNAME]変数には、 [wrapper.displayname]プロパティの値が設定されます。 (ver. 3.3.0から)

  • WRAPPER_DESCRIPTION]変数には、 [wrapper.description]プロパティの値が設定されます。 (ver. 3.3.0から)

  • WRAPPER_EVENT_JVM_ID]変数には、 JVMが再起動した回数を示し、1で始まる1つのインテージャー値(整数値)が設定されます。 jvm_*]イベントのためだけに設定されます。 (ver. 3.3.0から)

  • WRAPPER_EVENT_JVM_PID]変数には、 JVMプロセスのPIDを含む1つのインテージャー値(整数値)が設定されます。 [jvm_prelaunch]イベントの例外と共に、 jvm_*]イベントのためだけに設定されます。 (ver. 3.3.0から)

  • WRAPPER_EVENT_NAME]変数には、 発生したイベント名が設定されます。 (ver. 3.3.0から)

  • WRAPPER_EVENT_WRAPPER_PID]変数には、 WRAPPERプロセスのPIDを含む1つのインテージャー値(整数値)が設定されます。 (この環境変数は、[WRAPPER_PID]環境変数のエイリアスであり、 互換性の都合上の理由のためだけに利用されています) (ver. 3.3.0から)