Interstage Application Server/Interstage Web Server J2EE ユーザーズガイド |
目次 索引 |
第1部 J2EE共通編 | > 第2章 J2EEアプリケーションの設計 | > 2.3 クラスローダ |
ここではIJServerが使用するクラスやアプリケーションが使用するクラスの設定方法について説明します。
設定したクラスの参照順については、“クラスローダの構成”および“クラスローダの検索順番の変更”を参照してください。
また、設定したクラスのHotDeploy機能、およびクラスのオートリロード機能での扱いについては、それぞれ“J2EE のHotDeploy機能”、“クラスのオートリロード機能”を参照してください
“XMLパーサの設定”を参照してください。
複数のIJServer間で共通に使用するクラスは、J2EEプロパティのクラスパスに設定します。
複数のIJServer間で共通のクラスにはJDBCドライバなどユーザがアプリケーションで使用するライブラリを自由に設定することができます。
J2EEプロパティのクラスパスは、Interstage管理コンソールを使用して、以下の方法で設定します。
また、isj2eeadminコマンドで設定することも可能です。詳細は、“リファレンスマニュアル(コマンド編)”を参照してください。
ここでは、IJServer内で共通に使用するクラスの設定方法について説明します。
IJServer内で共通に使用するクラスの設定方法はワークユニットのクラスパスに設定する方法、IJServerのSharedディレクトリに設定する方法、アプリケーション固有ライブラリパスに設定する方法、IJServerのextディレクトリに設定する方法があります。
ワークユニットのクラスパスに、jarファイルまたはクラスファイルが保管されたディレクトリを絶対パスで指定します。
ワークユニットのクラスパスは、Interstage管理コンソールを使用して、以下のどちらかの方法で設定します。
また、isj2eeadminコマンドで設定することも可能です。詳細は、“リファレンスマニュアル(コマンド編)”を参照してください。
以下のどちらかの方法で設定します。
Shared/libとShared/classes内に同一のパッケージ名、クラス名のクラスが存在した場合は、Shared/classesディレクトリ内のクラスがロードされます。
Sharedディレクトリに資源を保管する際、保管できる権限が一般ユーザに付与されていない場合は、必要に応じて管理者が権限を変更してください。
ワークユニットのアプリケーション固有ライブラリパスに、jarファイルまたはアプリケーション固有ライブラリのクラスファイルが保管されたディレクトリを絶対パスで指定します。
ワークユニットのアプリケーション固有ライブラリパスは、Interstage管理コンソールを使用して、以下のどちらかの方法で設定します。
また、isj2eeadminコマンドで設定することも可能です。詳細は、“リファレンスマニュアル(コマンド編)”を参照してください。
IJServerのextディレクトリにjarファイルを格納することで、コンテナが動作するために必要なクラスパスより優先して使用することが可能です。
ただし、以下の点に注意してください。
IJServerの実行に必要なクラスと、アプリケーションの実行に必要なクラスの干渉を避けるためにも、前記の“アプリケーション固有ライブラリパスに設定する方法”または、J2EEアプリケーション内にクラスを含めることを推奨します。後者については“アプリケーションのクラス”を参照してください。
環境変数:CLASSPATH(自動起動時はシステム環境変数)は、クラスローダの分離に“分離しない”を設定している場合に、“システムクラスローダ”でロードされます。
クラスローダの分離が“EAR間で分離”または“すべて分離”の場合は環境変数:CLASSPATHに設定されているクラスはロードされません。
アプリケーションのクラスは、EARファイル、ejb-jarファイル、WARファイル、RARファイルをInterstage管理コンソールを使用して、以下の方法で配備することで設定します。
EARファイルは以下のようなファイル構成で構築します。
EJBアプリケーションのクラスは、以下のどちらかの方法で設定します。
Webアプリケーションのクラスは、以下のどちらかの方法で設定します。
Connectorのクラスは、以下のいずれかの方法で設定します。
Connectorサービスに配備されたConnectorは配備先をワークユニットのクラスパスに設定する必要があります。
EJBアプリケーション、Webアプリケーションからユーティリティクラスのような共通に使用されるライブラリをIJServerに配備する方法を説明します。
アプリケーション内で共通のクラスを使用する方法として、以下の2つの方法があります。
どちらの方法もユーティリティクラスのように共通に使用されるクラスをejb-jarファイル、WARファイルに含めることなくEJBアプリケーション、Webアプリケーションから使用することができるようになります。
上記の2つの方法では、以下のようにクラスを参照できる範囲が異なります。
方法
クラスが参照可能な範囲
マニフェストクラスパスを設定する方法
マニフェストクラスパスが指定されたEJBアプリケーション(ejb-jar)、Webアプリケーション(WAR)内でのみ参照可能
EARファイル内のSharedディレクトリを使用する方法
アプリケーション内のすべてのクラスから参照可能
以下のように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
Class-Path: utility1.jar util/utility2.jar util/
マニフェストファイルを作成する際には下記の点に注意してください。
アプリケーション内で共通のクラスをEARファイル内のSharedディレクトリに保管してEARファイルをIJServerに配備することで設定します。
jarファイルの場合はShared/libディレクトリに、クラスの場合はShared/classesディレクトリに保管します。
EARファイル内のSharedディレクトリはInterstageの独自機能であり、他のアプリケーションサーバでは有効になりません。
また、SharedディレクトリはEARファイルに対してのみ有効であり、ejb-jarファイル、RARファイル、WARファイルに対しては有効になりません。
Shared/libとShared/classes内に同一のパッケージ名、クラス名のクラスが存在した場合は、Shared/classesディレクトリ内のクラスがロードされます。
IJServerを起動すると起動時のクラスパスの情報が以下の起動情報(info.log)およびコンテナログ(container.log)に出力されます。起動情報およびコンテナログを参照することでクラスパスの設定を確認することができます。起動情報およびコンテナログは、Interstage管理コンソールの[ワークユニット] > “ワークユニット名” > [ログ参照]タブから参照できます。
目次 索引 |