ここではIJServerが使用するクラスやアプリケーションが使用するクラスの設定方法について説明します。
設定したクラスの参照順については、“2.3.1 クラスローダの構成”および“2.3.3 クラスローダの検索順番の変更”を参照してください。
また、設定したクラスのHotDeploy機能、およびクラスのオートリロード機能での扱いについては、それぞれ“3.5.3 J2EEのHotDeploy機能”、“3.5.4 クラスのオートリロード機能”を参照してください。
設定の確認
IJServerを起動すると起動時のクラスパスの情報が以下の起動情報(info.log)およびコンテナログ(container.log)に出力されます。起動情報およびコンテナログを参照することでクラスパスの設定を確認することができます。起動情報およびコンテナログは、Interstage管理コンソールの[ワークユニット] > “ワークユニット名” > [ログ参照]タブから参照できます。
起動情報 : IJServer名\log\[プロセス通番]\info.log
コンテナログ : IJServer名\log\[プロセス通番]\container.log
起動情報 : IJServer名/log/[プロセス通番]/info.log
コンテナログ : IJServer名/log/[プロセス通番]/container.log
設定方法
ここでは、以下の設定方法について説明します。
XMLパーサ
“2.3.5 XMLパーサの設定”を参照してください。
複数のIJServer間で共通のクラス
複数のIJServer間で共通に使用するクラスは、J2EEプロパティのクラスパスに設定します。
複数のIJServer間で共通のクラスにはJDBCドライバなどユーザがアプリケーションで使用するライブラリを自由に設定することができます。
J2EEプロパティのクラスパスは、Interstage管理コンソールを使用して、以下の方法で設定します。
[システム] > [環境設定]タブ > [J2EEプロパティ] > [クラスパス]
また、isj2eeadminコマンドで設定することも可能です。詳細は、“リファレンスマニュアル(コマンド編)”を参照してください。
IJServer内で共通のクラス
ここでは、IJServer内で共通に使用するクラスの設定方法について説明します。
IJServer内で共通に使用するクラスの設定方法はワークユニットのクラスパスに設定する方法、IJServerのSharedディレクトリに設定する方法、アプリケーション固有ライブラリパスに設定する方法、IJServerのextディレクトリに設定する方法があります。
ワークユニットのクラスパスに、jarファイルまたはクラスファイルが保管されたディレクトリを絶対パスで指定します。
ワークユニットのクラスパスは、Interstage管理コンソールを使用して、以下のどちらかの方法で設定します。
[ワークユニット] > [新規作成] > [詳細設定] > [ワークユニット設定] > [クラスパス]
[ワークユニット] > “ワークユニット名” > [環境設定]タブ > [ワークユニット設定] > [クラスパス]
また、isj2eeadminコマンドで設定することも可能です。詳細は、“リファレンスマニュアル(コマンド編)”を参照してください。
以下のどちらかの方法で設定します。
IJServerのShared/libディレクトリにjarファイルを保管
IJServerのShared/classesディレクトリにクラスファイルを保管
Shared/libとShared/classes内に同一のパッケージ名、クラス名のクラスが存在した場合は、Shared/classesディレクトリ内のクラスがロードされます。
注意
Sharedディレクトリに資源を保管する際、保管できる権限が一般ユーザに付与されていない場合は、必要に応じて管理者が権限を変更してください。
ワークユニットのアプリケーション固有ライブラリパスに、jarファイルまたはアプリケーション固有ライブラリのクラスファイルが保管されたディレクトリを絶対パスで指定します。
ワークユニットのアプリケーション固有ライブラリパスは、Interstage管理コンソールを使用して、以下のどちらかの方法で設定します。
[ワークユニット] > [新規作成] > [詳細設定] > [ワークユニット設定] > [アプリケーション固有ライブラリパス]
[ワークユニット] > “ワークユニット名” > [環境設定]タブ > [ワークユニット設定] > [アプリケーション固有ライブラリパス]
また、isj2eeadminコマンドで設定することも可能です。詳細は、“リファレンスマニュアル(コマンド編)”を参照してください。
IJServerのextディレクトリにjarファイルを格納することで、コンテナが動作するために必要なクラスパスより優先して使用することが可能です。
ただし、以下の点に注意してください。
extディレクトリに複数のjarファイルが存在した場合、任意の順番でクラスパスに設定されます。
extディレクトリのjarファイルをロードするには、IJServerを再起動してください。
extディレクトリのjarファイルにコンテナが使用するクラスと同名のクラスが存在する場合、コンテナもそのクラスを使用して動作します。したがってコンテナが誤動作する可能性があるため、十分に動作検証を実施した上でこの機能を使用してください。
IJServerの実行に必要なクラスと、アプリケーションの実行に必要なクラスの干渉を避けるためにも、前記の“アプリケーション固有ライブラリパスに設定する方法”または、J2EEアプリケーション内にクラスを含めることを推奨します。後者については“アプリケーションのクラス”を参照してください。
環境変数:CLASSPATH
環境変数:CLASSPATH(自動起動時はシステム環境変数)は、クラスローダの分離に“分離しない”を設定している場合に、“システムクラスローダ”でロードされます。
クラスローダの分離が“EAR間で分離”または“すべて分離”の場合は環境変数:CLASSPATHに設定されているクラスはロードされません。
アプリケーションのクラス
アプリケーションのクラスは、EARファイル、ejb-jarファイル、WARファイル、RARファイルをInterstage管理コンソールを使用して、以下の方法で配備することで設定します。
[ワークユニット] > “ワークユニット名” > [配備] > [配備ファイル]
EARファイルの構成
EARファイルは以下のようなファイル構成で構築します。
EJBアプリケーションのクラスは、以下のどちらかの方法で設定します。
EARファイル内にejb-jarファイルを格納してIJServerに配備する
ejb-jarファイルをIJServerに配備する
Webアプリケーションのクラスは、以下のどちらかの方法で設定します。
EARファイル内にWARファイルを格納してIJServerに配備する
WARファイルをIJServerに配備する
Connectorのクラスは、以下のいずれかの方法で設定します。
EARファイル内にRARファイルを格納してIJServerに配備する
RARファイルをIJServerに配備する
RARファイルをConnectorサービスに配備する
Connectorサービスに配備されたConnectorは配備先をワークユニットのクラスパスに設定する必要があります。
EJBアプリケーション、Webアプリケーションからユーティリティクラスのような共通に使用されるライブラリをIJServerに配備する方法を説明します。
アプリケーション内で共通のクラスを使用するには以下の2つの方法があり、クラスを参照できる範囲が異なります。
方法 | クラスが参照可能な範囲 |
---|---|
マニフェストクラスパスを設定する方法 | マニフェストクラスパスが指定されたEJBアプリケーション(ejb-jar)、Webアプリケーション(WAR)内でのみ参照可能 |
EARファイル内のSharedディレクトリを使用する方法 | アプリケーション内のすべてのクラスから参照可能 |
どちらの方法もユーティリティクラスのように共通に使用されるクラスをejb-jarファイル、WARファイルに含めることなくEJBアプリケーション、Webアプリケーションから使用することができるようになります。
マニフェストクラスパスを設定する方法
以下のようにEARファイル内にアプリケーション内で共通のクラスとマニフェストファイルを保管します。
ユーティリティクラスをEARファイルのトップまたは、EARファイル内の任意のディレクトリ内に保管する。
ユーティリティクラスを使用するejb-jarファイルまたは、WARファイル内のMETA-INF/MANIFEST.MF内に以下のエントリを記述する。pathには、ユーティリティクラスが含まれるjarファイルまたは、クラスファイルが保管されたディレクトリをEARファイル内の相対パスで指定する。
Manifest-Version: 1.0 |
例
たとえば、web1.warからutility1.jarとutility2.jarおよび、com.fujitsu.Utility.classを利用する場合は以下のように定義したマニフェストファイルをweb1.warに含めます。
EARファイルの構成
web1.war
utility1.jar
util/utility2.jar
util/com/fujitsu/Utility.class
WARに含まれるマニフェストファイル
Manifest-Version: 1.0 |
注意
マニフェストファイルを作成する際には下記の点に注意してください。
ヘッダの‘:’の後には1つの半角空白が必要です。
UTF-8エンコード形式ではすべての行を72バイト以内で記述する必要があります。72バイトを超える場合は次の行の先頭に1つの半角空白を記述して、その後に記述を継続してください。
Class-Pathへの記載について、ディレクトリの場合は末尾に“/”(スラッシュ)を付加してください。
EARファイル内のSharedディレクトリを使用する方法
アプリケーション内で共通のクラスをEARファイル内のSharedディレクトリに保管してEARファイルをIJServerに配備することで設定します。
jarファイルの場合はShared/libディレクトリに、クラスの場合はShared/classesディレクトリに保管します。
EARファイル内のSharedディレクトリはInterstageの独自機能であり、他のアプリケーションサーバでは有効になりません。
また、SharedディレクトリはEARファイルに対してのみ有効であり、ejb-jarファイル、RARファイル、WARファイルに対しては有効になりません。
Shared/libとShared/classes内に同一のパッケージ名、クラス名のクラスが存在した場合は、Shared/classesディレクトリ内のクラスがロードされます。