World Map
Java Service Wrapperは、御社Javaアプリケーション製品の安定した信頼性を高める最短最善の方法です。
  • Free Trial
  • Buy Now
wrapper.java.library.path.<n> プロパティ

wrapper.java.library.path.<n> プロパティ

対応バージョン :2.2.9
対応エディション :プロフェッショナル版スタンダード版コミュニティー版
対応プラットフォーム :WindowsMac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/OSIBM z/Linux

このプロパティには、Javaライブラリーパスを設定します。 アプリケーションを起動するときに使う様々なライブラリーパス・エレメントをリストアップしたプロパティ・シリーズが必要なはずです。

各エレメントは「プロパティ名」を持ち、その名前は [wrapper.java.library.path.]で始まり、 プロパティ名の「<n>」コンポーネント部には、 「1」からカウントアップしていくインテージャー(整数値)のナンバリング数値を入れて指定します。 デフォルトでは、連番であり欠番で飛ぶことはないはずです。 [wrapper.ignore_sequence_gaps] プロパティで、シーケンス内でギャップ(途切れ)検索を「許可する/許可しない」を任意に設定にすることができます。

このライブラリーパスには、アプリケーションで利用するネイティブ・ライブラリー(JNI)を探す対象の ディレクトリーをリストとして指定しておきます。 指定ディレクトリーの中に、ライブラリー・ファイル (Windows:「wrapper.dll」、Linux/UNIX:「libwrapper.so」) を必ず置かなければなりません。

設定例:
wrapper.java.library.path.1=../lib

Wrapperによって生成されたJavaライブラリーパスの終わりへ、システムパスを追加するようにリクエストすることで、 デフォルトのJava動作を取得することも可能です。 操作に入る前に、 [wrapper.java.library.path.append_system_path] プロパティに関連するドキュメントを熟読してください。

注意

スペースを含むライブラリーパス・エントリー:

Wrapperでは、スペース(空白)を含むパス・エレメントを正しく取り扱います。 最終の生成されたライブラリーパスを引用符で囲むことでWrapperが自動的に処理します。 個別のライブラリーパス・エレメントのプロパティ値は、スペース(空白)を含んでいても 引用符を含む定義をするべきではありません。

注意

一部のネイティブ・ライブラリーは、動的にリンクされた他のライブラリーを参照します。 Javaは、Javaライブラリーパスを使い、初期JNIライブラリーをロケートしますが、 セカンダリー・ライブラリーは、そのプラットフォームのデフォルト・メカニズムを使い、ロード(読み込み)されます。

Windowsシステムでは、まず現在の作業ディレクトリー (「wrapper.exe」の配置場所)を覗き、その後、 「Windows system32」ディレクトリーとWindowsディレクトリーを覗きます。 最後に、システムパス「PATH」全体を検索します。 もし両方のDLLファイルが自分のアプリケーションの「lib」ディレクトリー に配置されていた場合、次のように、そのパスをシステムパスに追加する必要があるかもしれません。 その「set.PATH」はWindows用の設定であり、 「set.LD_LIBRARY_PATH」は、 クロスプラットフォーム向けのコンフィギュレーション・ファイル用の設定であるため、UNIXシステム上でも同様に動作します。 Mac OSXでは、「set.DYLD_LIBRARY_PATH」変数も活用できます。

set.PATH=..%WRAPPER_FILE_SEPARATOR%lib%WRAPPER_PATH_SEPARATOR%%PATH%
set.LD_LIBRARY_PATH=..%WRAPPER_FILE_SEPARATOR%lib%WRAPPER_PATH_SEPARATOR%%LD_LIBRARY_PATH%
set.DYLD_LIBRARY_PATH=..%WRAPPER_FILE_SEPARATOR%lib%WRAPPER_PATH_SEPARATOR%%DYLD_LIBRARY_PATH%

現在の作業ディレクトリーの中でなく、 「PATH」上に、セカンダリー・ライブラリーを配置すると、 他のアプリケーションによってインストールされた古いバージョンのライブラリーが、 「Windows system32」ディレクトリーで 競合するかもしれないリスクがありますので、ご注意ください。 これは、システムがファイルを検索する順番によるものです。

この問題は、システム上にSAPアプリケーションもまたインストールされている場合に、 SAPのJCOライブラリーの動作にも見られることです。

プラットフォーム仕様によるネイティブ・ライブラリー

Wrapperでは、たとえアプリケーションがネイティブ・ライブラリーを利用していたとしても、 どんなプラットフォーム上でも動作するバイナリ配布を、簡単に作成できるように、ファシリティを提供しています。

Wrapperのネイティブ・ライブラリーのケースで見ると、 Wrapperは、ネイティブ・コンポーネントの配置の仕方に関しても、賢くできており、 ライブラリーには、現在のOS名、プラットフォーム名や、ビット深さを含むような名前がつけられています。 例えば: 「wrapper-windows-x86-32.dll」や 「libwrapper-linux-x86-32.so」です。

しかしながら、一般的にほとんどのライブラリーは、このような機能をサポートしておらず、 ネイティブ・ライブラリーに、全てのプラットフォームで同じ名前が付けられていることも多いようです。 その場合、通常は、アプリケーションのプラットフォーム仕様向けごとに個別に配布する必要性があります。 ところが、下記のようにライブラリーパスを定義することにより、 Wrapperは動的にランタイムで正しいプラットフォーム仕様ディレクトリーを参照し、 単一のWrapper配布だけで、全てのプラットフォームをサポートすることが可能なのです。

設定例:
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

参照: Library