8. ライブラリの配置計画

共通クラスローダでロード

最も一般的な、ライブラリの共有方法です。 配置したライブラリは、WebOTX ASに配備した全てのアプリケーションで利用できます。 ただしライブラリを更新する場合、そのライブラリを利用している全てのアプリケーションが影響を受けるという点に注意する必要があります。 ライブラリの置換を行う場合は、WebOTX AS の再起動が必要になります。

アプリケーションのアーカイブに含める

ライブラリを共有せずに、個別にアプリケーションのアーカイブに含めます。 他のアプリケーションに影響を与えることなく利用するライブラリを更新できるメリットがあります。 ただしライブラリを更新するためには、アプリケーションの再配備が必要になります。 さらにアプリケーションの形式がEARの場合は、利用するライブラリをEAR内で共通とするか、WAR等で個別に持つかを決定する必要があります。 EJBの呼び出しで引数や戻り値として利用するクラスは、必ずEAR内で共通のライブラリとして配置する必要があります。

アプリケーション固有のライブラリとして配備時に指定する

アーカイブに含めずに、配備時に利用するライブラリを指定します。 Applibsクラスローダでロードされます。 使用するライブラリは、[DOMAIN]/lib/applibsに配置してください。 アーカイブを変更する必要がなく、なおかつアプリケーション間で特定のライブラリの別バージョンを使い分ける事ができる点が特徴です。

拡張クラスローダでロード

配置したライブラリは、WebOTX ASに配備した全てのアプリケーションで利用できます。 拡張クラスローダでライブラリをロードした場合、WebOTX AS自体のライブラリよりも優先してロードされるため、注意が必要です。 拡張クラスローダでロードするJarライブラリを更新するためには、ドメインの再起動が必要になります。

JDK 9以降では拡張機能メカニズムが廃止されたことにより、拡張クラスローダは廃止されました。

プロセスグループのシステムクラスローダでロード

プロセスグループ毎に環境変数CLASSPATHでクラスパスを設定可能であるため、プロセスグループ毎に共有するライブラリを分ける場合に利用できます。 ただし、システムクラスローダでロードされるクラスをアプリケーション用のクラスローダから参照することはできません。 設定変更後は、アプリケーショングループの再起動が必要になります。

8.1. JDBC ドライバの配置

JDBCドライバはWebOTX本体からアクセスできる必要があります。 そのため、JDBCドライバは拡張クラスローダか共通クラスローダで読み込むように配置する必要があります。 通常は[DOMAIN]/lib/extに配置します。

JDK 9以降では拡張クラスローダが廃止されたため、[DOMAIN]/lib/extに配置しても読み込まれません。 代わりに[DOMAIN]/libに配置して、[DOMAIN]/config/server.policyで必要な権限を付与する必要があります。 例えば、[DOMAIN]/libに配置したJDBCドライバに全ての権限を与える場合は、server.policyに以下のように追記します。 (server.policyの編集はドメインを停止した状態で実施してください)

grant codeBase "file:${com.nec.webotx.instanceRoot}/lib/[JDBCドライバ].jar" {
    permission java.security.AllPermission;
};