12 共有アプリケーション・クラス・ローダーの構成
同じアプリケーションの複数のインスタンスを異なるパーティションで実行する場合、これらのインスタンス間でクラス・ローディング・メモリーを最適化する必要がある場合があります。WebLogic Server MTには、この目的のためにデプロイメント・ディスクリプタ・ベースのクラス・ローディング機能が含まれています。
注意:
WebLogic Server Multitenantドメイン・パーティション、リソース・グループ、リソース・グループ・テンプレート、仮想ターゲットおよびリソース消費管理は、WebLogic Server 12.2.1.4.0で非推奨になり、次のリリースで削除されます。クラス・ローダー機能は、アプリケーション開発者による使用のみを対象としています。この章では、『Oracle WebLogic Serverアプリケーションの開発』の「WebLogic Serverアプリケーションのクラス・ローディングの理解」で説明しているように、WebLogic Serverアプリケーションのクラス・ローディングを理解していることを前提としています。WebLogic Serverアプリケーションのクラス・ローディングについて理解していない場合は、その章を最初にお読みください。
この章の内容は次のとおりです。
共有アプリケーション・クラス・ローダーの構成: 概要
WebLogic Server MTには、パーティション・クラス・ローダーおよび共有アプリケーション・クラス・ローダーという2つの新しいタイプのクラス・ローダーが含まれます。
-
パーティション・クラス・ローダー: パーティション・クラス・ローダーは、各パーティションに自動的に作成されます。このクラス・ローダーは、パーティション全体かつそのパーティションでのみ表示可能である必要があり、ドメインの残りの部分では表示できないクラスをロードします。(これには、グローバル・コネクタが含まれます。)
注意:
グローバル・コネクタは、サーバー内のすべてのアプリケーションで表示可能および使用可能になるように構成された、特定のタイプのコネクタ・モジュールです。これらのモジュールは、スタンドアロンとして、またはエンタープライズ・アーカイブ(EAR)ファイルのモジュールとしてデプロイされます。
-
共有アプリケーション・クラス・ローダー: 共有アプリケーション・クラス・ローダーは、アプリケーションがリソース・グループ・テンプレートにデプロイされている場合、Software-as-a-Service (SaaS)ユースケースでのみ関係します。クラス・ローダーは、あるアプリケーションのすべてのインスタンスでパーティションを越えて表示可能である必要があるが、他のアプリケーションでは表示できないクラスをロードします。(パーティションではなく)ドメインに直接デプロイされているアプリケーションは、パーティションが構成されている場合でも影響を受けません。
WebLogic Serverデプロイメント・ディスクリプタでは、アプリケーション・パッケージング内の
APP-INF/classesディレクトリのJARファイルおよびクラスを識別するために新しいshareable構成をサポートしています。これらのクラスは、共有アプリケーション・クラス・ローダーからロードされる必要があります。shareable構成は、エンタープライズ・アプリケーションのweblogic-application.xmlファイルで、および本番モードでのみサポートされます。
パーティションを作成するときに、新しいパーティション・クラス・ローダーが作成され、パーティションの最初のアプリケーションがリソース・グループにデプロイされます。既存のパーティション・クラス・ローダーは、パーティションが削除されると削除され、パーティションの最後のアプリケーションがリソース・グループからアンデプロイされます。
新しい共有アプリケーション・クラス・ローダーは、(共有可能JARが構成された)アプリケーションがリソース・グループ・テンプレートにデプロイされたときに作成される可能性があり、そのリソース・グループ・テンプレートはパーティションのリソース・グループによって参照されます。
既存の共有アプリケーション・クラス・ローダーは、関連するアプリケーションがリソース・グループ・テンプレートからアンデプロイされると削除されます。アプリケーションをリソース・グループ・テンプレートからアンデプロイすると、そのテンプレートを参照するすべてのリソース・グループからアプリケーションはただちにアンデプロイされます。
注意:
クラス・ローディングが共有されると仮定できません。共有は可能な場合と可能でない場合があります。たとえば、パーティションごとに異なる構成を取得するようにフィルタリングが設定されている場合、共有はできません。フィルタリング・クラス・ローダーの詳細は、『Oracle WebLogic Serverアプリケーションの開発』のフィルタリング・クラス・ローダーの使用に関する項を参照してください。
このため、共有可能なJARファイルを指定することはできますが、これらのJARファイルからのクラスが1回のみロードされ共有されると想定することはできません。
共有アプリケーション・クラス・ローダーの構成: 主なステップ
共有アプリケーション・クラス・ローダーを構成する場合、アプリケーション開発者は、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 ServerスタイルのAPP-INF/libディレクトリを識別します。 -
LIB-DIRは、Java EEスタイルのライブラリ・ディレクトリを識別します。 -
APP-INF-CLASSESは、WebLogic Serverスタイルの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アプリケーションの開発』のフィルタリング・クラス・ローダーの使用に関する項を参照してください。