18.1.3 EADsサーバが使用するJavaクラスローダ
EADsサーバで使用するJavaクラスローダについて説明します。
Javaクラスローダとは,JavaクラスをJava仮想マシンに動的にロードする役割を持ちます。EADsサーバが使用するJavaクラスローダの構成を次の図に示します。
-
システムクラスローダ
jdkライブラリとEADsサーバで使用するクラスをロードします。
-
ユーザライブラリクラスローダ
<運用ディレクトリ>/app/lib下に配置したユーザファンクションおよびユーザイベントハンドラ共通で使用するライブラリのクラスをロードします。
このクラスローダは,EADsサーバで1つ作成されます。
-
ファンクションクラスローダ
ユーザファンクションのjarファイルに含まれるクラスと,jarファイルのマニフェストファイルに記載されたライブラリに含まれるクラス(ユーザファンクションだけで使用するクラス)をロードします。
このクラスローダは,jarファイルごとに作成されます。そのため,ユーザファンクションのjarファイルを複数配置した場合,クラスローダも複数作成されます。
-
イベントクラスローダ
ユーザイベントハンドラのjarファイルに含まれるクラスと,jarファイルのマニフェストファイルに記載されたライブラリに含まれるクラス(ユーザイベントハンドラだけで使用するクラス)をロードします。
このクラスローダは,jarファイルごとに作成されます。
各クラスローダのクラス検索は,親クラスローダであるシステムクラスローダから行います。
ユーザファンクションのロード順序は,jarファイルのASCIIコード順です。
異なるファンクションクラスローダに同じ完全修飾クラス名のクラスをロードできますが,ユーザファンクションとして実行できるのは先にロードされたユーザファンクションとなります。あとからロードされたユーザファンクションについては,インスタンスの生成およびFuncitonインターフェースのinit()は実行されません。