この章では、WebLogic Server Multitenant (MT)で共有アプリケーション・クラス・ローダーを使用する方法について説明します。この章では、適宜追加情報について、WebLogic Serverのドキュメント・セットおよびオンライン・ヘルプを参照します。
この機能は、アプリケーション開発者による使用のみを対象としています。この章では、『Oracle WebLogic Serverアプリケーションの開発』のWebLogic Serverアプリケーションのクラス・ローディングの理解に関する項で説明しているように、WebLogic Serverアプリケーションのクラス・ローディングを理解していることを前提としています。WebLogic Serverアプリケーションのクラス・ローディングについて理解していない場合は、その章を最初にお読みください。
この章の内容は次のとおりです。
同じアプリケーションの複数のインスタンスを異なるパーティションで実行する場合、これらのインスタンス間でクラス・ローディング・メモリーを最適化する必要がある場合があります。WebLogic Server MTには、この目的のためにデプロイメント・ディスクリプタ・ベースのクラス・ローディング機能が含まれています。
WebLogic Server MTには、次の2つのタイプのクラス・ローダーが用意されています。
パーティション・クラス・ローダー - パーティション・クラス・ローダーは、パーティションごとにかわりに作成されます。このクラス・ローダーは、パーティション全体かつそのパーティションでのみ表示可能である必要があり、ドメインの残りの部分では表示できないクラスをロードします。(これには、グローバル・コネクタが含まれます。)
|
注意: グローバル・コネクタは、サーバー内のすべてのアプリケーションで表示可能および使用可能になるように構成された、特定のタイプのコネクタ・モジュールです。これらのモジュールは、スタンドアロンとして、またはエンタープライズ・アプリケーション(EAR)のモジュールとしてデプロイされます。 |
共有アプリケーション・クラス・ローダー - 共有アプリケーション・クラス・ローダーは、アプリケーションがリソース・グループ・テンプレートにデプロイされる場合にSaaSユースケースでのみ関連します。クラス・ローダーは、あるアプリケーションのすべてのインスタンスでパーティションを越えて表示可能である必要があるが、他のアプリケーションでは表示できないクラスをロードします。(パーティションではなく)ドメインに直接デプロイされているアプリケーションは、パーティションが構成されている場合でも影響を受けません。
WebLogicデプロイメント・ディスクリプタは、アプリケーション・パッケージング内のAPP-INF/classesの下のJARおよびクラスを識別する、新しいshareable構成をサポートします。これらのクラスは、共有アプリケーション・クラス・ローダーからロードされる必要があります。
shareable構成は、エンタープライズ・アプリケーションのweblogic-application.xmlファイルで、および本番モードでのみサポートされます。
パーティションを作成するときに、新しいパーティション・クラス・ローダーが作成され、パーティションの最初のアプリケーションがリソース・グループにデプロイされます。既存のパーティション・クラス・ローダーは、パーティションが削除されると削除され、パーティションの最後のアプリケーションがリソース・グループからアンデプロイされます。
アプリケーション(共有可能なJARが構成された)がリソース・グループ・テンプレートにデプロイされると、新しい共有アプリケーション・クラス・ローダーを作成でき、リソース・グループ・テンプレートはパーティションのリソース・グループによって参照されます。
既存の共有アプリケーション・クラス・ローダーは、関連するアプリケーションがリソース・グループ・テンプレートからアンデプロイされると削除されます。アプリケーションをリソース・グループ・テンプレートからアンデプロイすると、そのテンプレートを参照するすべてのリソース・グループからアプリケーションはただちにアンデプロイされます。
XMLエディタを使用すると、アプリケーション開発者は、アプリケーションの作成時にweblogic-application.xmlファイルを編集し、<class-loading>要素内に1つ以上のshareable要素を追加できます。
次に例を示します。
<class-loading>
<shareable dir="APP-INF-LIB">
<include>coupon-generator.jar</include>
<include>group-discounts.jar</include>
</shareable>
<shareable dir="LIB-DIR">
<exclude>program-guide.jar</exclude>
</shareable>
</class-loading>
dir属性は、以降のパターンが適用されるディレクトリを識別します。dirでサポートされる値は、次の値のみです。
APP-INF-LIBは、WebLogicスタイルのAPP-INF/libディレクトリを識別します。
LIB-DIRは、Java EEスタイルのライブラリ・ディレクトリを識別します。
APP-INF-CLASSESは、WebLogicスタイルのAPP-INF/classesを識別します。
APP-INF-LIBおよびLIB-DIRの場合、<include></include>要素で設定した値は、問題なく共有できると考えられるJARファイルを識別します。これらのJARのクラスは、次のものに依存できません。
共有可能とみなされていないJARのクラス。
グローバル・コネクタなど、パーティション・スコープのクラス。
同様に、APP-INF-LIBおよびLIB-DIRの場合、<exclude></exclude>要素は、共有できないJARの識別に役立ちます。
次の構成ルールが適用されます。
APP-INF-LIBおよびLIB-DIRがincludeまたはexclude構成なしで識別される場合、そのディレクトリのすべてのJARは共有可能とみなされます。
APP-INF-LIBおよびLIB-DIRがinclude構成で識別される場合、includeパターンで識別されるJARのみが共有可能とみなされます。
APP-INF-LIBおよびLIB-DIRがexclude構成で識別される場合、excludeパターンによって識別されるJARを除くディレクトリのすべてのJARが共有可能とみなされます。
APP-INF-CLASSES
APP-INF-CLASSESの場合、includeおよびexclude構成は、存在しても無視されます。APP-INF-CLASSESが共有可能と識別された場合、すべてのクラスが共有可能と宣言されます。
APP-INF-CLASSESは、コード・ソースの場所であり、includeおよびexclude要素は必要ありません。共有アプリケーション・クラス・ローダー実装では、コード・ソースの場所内に要素を含めたり除外することはできません。
APP-INF-CLASSESは、ディスクリプタのパッケージング単位、アプリケーションまたはライブラリでのみ有効です。アプリケーションおよびライブラリの場合は、個別に宣言する必要があります。
フィルタ・クラス・ローダーの詳細は、『Oracle WebLogic Serverアプリケーションの開発』のフィルタ・クラス・ローダーの使用に関する項を参照してください。