ここでは、クラスローダを使用する際の注意事項について説明します。
コネクタを使用する際の注意事項
ネイティブライブラリを使用したコネクタを運用する場合、配備したIJServerクラスタ、またはInterstage Java EE DASサービスから参照可能にするために、ネイティブライブラリへのパスをパス/ライブラリパスに設定します。
Interstage Java EE管理コンソールを利用して設定する場合は、以下の手順で実行します。
ツリービューから「設定」を選択し、設定名を選択してください。
「JVM 設定」タブをクリックします。
「パス設定」タブをクリックします。
「ネイティブライブラリパスのサフィックス」フィールドで、ネイティブライブラリパスに追加するエントリを指定します。
ポイント
エントリの指定方法
ネイティブライブラリが格納されたディレクトリのパスを指定してください。また、コネクタモジュール内に含まれたネイティブライブラリを参照する場合は、コネクタモジュールの展開先ディレクトリ配下のネイティブライブラリが格納されたディレクトリを指定してください。コネクタモジュールの展開先ディレクトリは、「3.2.1 Interstage Java EE DASサービスのファイル構成」を参照してください。
「保存」をクリックします。
環境設定の対象に応じて、IJServerクラスタ、またはInterstage Java EE DASサービスを再起動します。
コマンドから指定する場合は、asadminコマンドのsetサブコマンドでネイティブライブラリパスのサフィックスに設定後、IJServerクラスタ、またはInterstage Java EE DASサービスを再起動してください。詳細は、「9.8.15 Java VMの定義項目」を参照してください。
Java EEアプリケーションでJNIを使用する場合の注意事項
同じNativeモジュールは、別々のクラスローダでロードすることはできません。JNIを使用するクラスがアプリケーション(EAR、ejb-jar、WAR、RAR)に含まれている場合、同じNativeモジュールを別々のクラスローダでロードした場合、java.lang.UnsatisfiedLinkErrorがスローされます。
java.lang.UnsatisfiedLinkErrorがスローされた場合は、JNIを使用するクラス(nativeメソッドを実装しているクラス)をアプリケーションに含めずに、JNIを使用するクラスを共通ディレクトリに保管、またはクラスパスのサフィックスに設定してください。
また、JNIを使用するクラスがアプリケーション(EAR、ejb-jar、WAR、RAR)に含まれている場合、そのアプリケーションはHotDeployを使用できません。
使用した場合は、java.lang.UnsatisfiedLinkErrorがスローされ、HotDeployに失敗する可能性があります。java.lang.UnsatisfiedLinkErrorがスローされ、HotDeployに失敗した場合は、IJServerクラスタを再起動してください。
JNIを使用するアプリケーションでHotDeployを使用する場合は、JNIを使用するクラスを共通ディレクトリに保管、またはクラスパスのサフィックスに設定してください。なお、JNIを使用するクラスを入れ替える場合はIJServerクラスタを再起動してください。
WEB-INF/lib配下に保管したJARファイル内のリソースへアクセスする場合の注意事項
WEB-INF/lib配下に保管したJARファイル内のリソースにWebクラスローダのgetResoruce/getResourceAsStreamを呼び出してアクセスした場合、初回アクセス時にJARファイルがIJServerクラスタの管理するディレクトリに展開されます。そのため、JARファイル内に多くのリソースが存在すると、初回アクセス時の性能が劣化する場合があります。
本問題は該当するJARファイルをWEB-INF/lib以外に保管し、IJServerクラスタで使用するクラスに設定することで回避可能です。
設定方法は「3.19.4 IJServerクラスタで使用するクラスの設定について」を参照してください。