WebSphere Application Server - Express for i5/OS, Version 6.1   
             オペレーティング・システム: i5/OS

             目次と検索結果のパーソナライズ化

J2EE アプリケーション・クライアントのクラス・ロード

J2EE アプリケーション・クライアントを稼働する際に、 アプリケーションが使用するクラスをロードするためのクラス・ローダーの階層が作成されます。

次のリストは、クラス・ローダーの階層について示したものです。

J2EE アプリケーション・クライアント・ランタイムの初期化の際に、 追加のクラス・ローダーが WebSphere クラス・ローダーの子として作成されます。 クライアント・アプリケーションが Java DataBase Connectivity (JDBC) API、Java Message Service (JMS) API、または Uniform Resource Locator (URL) などのリソースを使用する場合には、これらのリソースのそれぞれをロードするために別のクラス・ローダーが作成されます。最後に、Application Client ランタイムは、クライアント JAR マニフェストを繰り返し処理して、.ear ファイル内のクラスをロードするために WebSphere クラス・ローダーを設定します。CLASSPATH 環境変数で定義されるシステム・クラスパスは使用されることはなく、 クラス・ローダーの階層には含まれません。

クライアント・アプリケーションを正しくパッケージ化するためには、 どのクラス・ローダーがクラスをロードするのかを理解している必要があります。 Java コードがクラスをロードするときに、 そのクラスをロードするのに使用されるクラス・ローダーがそのクラスに割り当てられます。 後になってそのクラスによってロードされるクラスはいずれも、 そのクラス・ローダーまたはその親のうちのいずれかを使用しますが、 子のクラス・ローダーを使用することはありません。

場合によっては、Application Client ランタイムは、クライアント・アプリケーション・クラスが、Application Client ランタイムによって作成されたクラス・ローダーとは異なるクラス・ローダーによってロードされたことを、検出することができます。これが検出された場合、次のメッセージが表示されます。
WSCL0205W: The incorrect class loader was used to load [0]
このメッセージは、 クライアント・アプリケーション・クラスが階層中の親クラス・ローダーのいずれかによってロードされたときに出されます。 この状態は、 通常、.ear ファイルとハード・ディスクに同じクラスがある場合に引き起こされます。 親クラス・ローダーのいずれかがあるクラスを見つけると、そのクラス・ローダーは、Application Client ランタイムのクラス・ローダーよりも前にそのクラスをロードします。場合によっては、クライアント・アプリケーションは依然として正しく機能します。 ただし、ほとんどの場合は、「 クラスが見つかりません」という例外を受け取ります。

クラスパス・フィールドの構成

J2EE クライアント・アプリケーションをパッケージにするときに、 さまざまなクラスパス・フィールドを構成する必要が起こります。 理想的には、アプリケーションが必要とするすべてのものを .ear ファイルにパッケージすべきです。 これが、J2EE クライアント・アプリケーションをユーザーのクライアントに配布する最も簡単な方法です。 ただし、JDBC API、JMS API、または URL のようなリソースは、 パッケージにしないようにしてください。 このようなリソースの場合は、 ハード・ディスク上のそれらのクラスにアクセスするのに、 クラスパス参照を使用してください。 また、再配布する必要のない他のクラスがクライアント・マシン上にインストールされている場合があります。 この場合も、 以下に述べるように、 ハード・ディスク上のクラスにアクセスするのにクラスパス参照を使用することができます。

EAR ファイル内のクラスの参照

WebSphere 製品の J2EE アプリケーションは、システム・クラスパスを使用しません。 MANIFEST クラスパス項目を使用して、 .ear ファイル内の他の JAR ファイルを参照してください。 アセンブリー・ツールを使用して、 以下の値を構成してください。 例えば、クライアント・アプリケーションが EJB JAR ファイルのパスにアクセスする必要がある場合には、デプロイされたエンタープライズ Bean モジュール名を、アプリケーション・クライアントのクラスパスに追加します。以下のように、 各種モジュール (アプリケーション・クライアント、EJB、Web) ごとの Classpath フィールドのフォーマットは同じです。
注: これは、 アプリケーションがプラットフォームに依存せずに機能できるようにする Java メソッドです。
普通は、モジュール (.jar ファイル) を .ear ファイルのルートに追加します。 この場合、Classpath フィールドにモジュール (.jar ファイル) の名前だけを指定すれば済みます。 パスによりモジュールを追加することにした場合は、.ear ファイルのルートに対する相対パスを指定する必要があります。

.class ファイルを参照する場合には、 .ear ファイルのルートを基準にしてディレクトリーを指定する必要があります。 アセンブリー・ツールを使用すると、 個々のクラス・ファイルを .ear ファイルに追加できます。 これらの追加クラス・ファイルは、.jar ファイルにパッケージ化することをお勧めします。 この .jar ファイルをモジュール Classpath フィールドに追加します。 .class ファイルを .ear ファイルのルートに追加する場合は、 ./ をモジュール Classpath フィールドに追加します。

次のディレクトリー構造の例について考えてみます。 このディレクトリー構造では、myapp.ear ファイルに、 myclient.jar という名前のアプリケーション・クライアント JAR ファイルと mybeans.jar EJB モジュールが含まれています。 追加クラスは、class1.jar ファイルと utility/class2.zip ファイルに存在します。 xyz.class という名前のクラスは、 JAR ファイルではなく、EAR ファイルのルートにパッケージ化されています。 Classpath プロパティーの値として ./mybeans.jar utility/class2.zip class1.jar を指定してください。 検索順序は、myapp.ear/myclient.jar myapp.ear/xyz.class myapp.ear/mybeans.jar myapp.ear/utility/class2.zip myapp.ear/class1.jar になります。

EAR ファイル内にないクラスの参照

launchClient の -CCclasspath パラメーターを使用します。 このパラメーターは、実行時に指定され、 プラットフォーム固有のクラスパスの値を取ります。 この場合、複数の値はセミコロンまたはコロンで区切られます。 この点に関しては、クライアントとサーバーは類似しています。

リソース・クラスパス

アプリケーション・クライアント・リソース構成ツールを用いて、クライアント・アプリケーションが使用するリソースを構成する際に、 リソースに必要なクラスパスを指定することができます。 例えば、 アプリケーションが DB2 データベースに対して JDBC を使用している場合は、 db2java.zip をデータベース・プロバイダーのクラスパス・フィールドに追加します。 これらのクラスパス値はプラットフォーム固有であり、 複数の値を分離するのにセミコロンまたはコロンを必要とします。

WebSphere Application Server for i5/OS では、IBM Developer Kit for Java の JDBC プロバイダーを使用して DB2/400 にアクセスする場合、 db2_classes.jar ファイルをクラスパスに追加する必要はありません。 ただし、IBM Toolbox for Java の JDBC プロバイダーを使用する場合は、 jt400.jar ファイルの場所を指定する必要があります。

launchClient API の使用

launchClient コマンドを使用する場合は、 WebSphere クラス・ローダー階層が作成されます。 しかし、launchClient API を使用する場合には、 このセットアップを自分で行う必要があります。 Java システム・プロパティーを定義する場合には、 launchClient シェル・コマンドをコピーします。




関連概念
アセンブリー・ツール
関連資料
launchClient ツール
概念トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 7:05:28 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.express.iseries.doc/info/iseriesexp/ae/ccli_classloading.html