この章では、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アプリケーションの開発』のフィルタ・クラス・ローダーの使用に関する項を参照してください。