Oracle WebLogic Server Multitenantを使用すると、リソース・グループおよびリソース・グループ・テンプレートを介して、スタンドアロンおよび埋込みのリソース・アダプタをドメイン・パーティションにデプロイできます。
この章の内容は次のとおりです。
リソース・アダプタがパーティションにデプロイされると、そのすべてのリソース(リソース・アダプタBean、接続プール、管理対象オブジェクトなど)はパーティションのJNDIネームスペースに登録され、JNDI名およびクラス・ローダーは、他のパーティションのアプリケーションから分離されます。このため、同じパーティション内のアプリケーションのみが、リソース・アダプタが提供するサービスにアクセスでき、同じパーティション内のアプリケーションのみがリソース・アダプタのクラスにアクセスできます。
リソース・アダプタがドメインにデプロイされると、そのすべてのリソース・アダプタBean、接続プールおよび管理対象オブジェクトは、ドメインのJNDIネームスペースに登録されます。これらのリソースは、ドメインにデプロイされたアプリケーションでのみ表示可能です。
リソース・アダプタをリソース・グループ・テンプレートに構成し、それをパーティションのリソース・グループで参照できます。
この例では、スタンドアロン・リソース・アダプタはリソース・グループ・テンプレートに定義されます。2つのパーティション(HR
およびFinance
)はそれぞれ、リソース・グループ・テンプレートからアプリケーションおよびリソースを継承するリソース・グループを定義します。この場合、各パーティションには独自のリソース・アダプタがあります。
<domain> ... <resource-group-template> <name>RGT1</name> <app-deployment> <name>my_ra</name> <module-type>rar</module-type> <source-path>/some/directory/mail-connector.rar</source-path> <deployment-order>120</ deployment-order > ... </app-deployment> ... </resource-resource-template> <partition> <name>HR</name> <resource-group> <name>RG1</name> <resource-group-template>RGT1</resource-group-template> </resource-group> ... </partition> <partition> <name>Finance</name> <resource-group> <name>RG2</name> <resource-group-template>RGT1/resource-group-template> </resource-group> ... </partition> ... </domain>
この例では、ドメインに定義された2つのパーティション(HR
およびFinance
)があります。HR
パーティションには、スタンドアロン・リソース・アダプタを定義するリソース・グループがあります。この場合、 HR
パーティションにデプロイされたリソース・アダプタは、Finance
パーティションでは非表示になります。
<domain> ... <partition> <name>HR</name> <resource-group> <name>HR Apps and Resources</name> <app-deployment> <name>mailra</name> <module-type>rar</module-type> <source-path>/some/directory/mail-connector.rar</source-path> <deployment-order>120</ deployment-order > ... </app-deployment> ... </resource-group> </partition> <partition> <name>Finance</name> ... </partition> ... </domain>
システム管理者は、マルチテナント環境でリソース・アダプタを開発する場合、特定のベスト・プラクティスおよび考慮事項に準拠することをお薦めします。
パーティション・レベルのスタンドアロン・リソース・アダプタは、パーティション・クラス・ローダー(ドメイン/lib
クラス・ローダーのサブ・クラス・ローダー)およびパーティションのすべてのアプリケーション・クラス・ローダーの親によってロードされます。
weblogic-ra.xml
デプロイメント・ディスクリプタの<enable-global-access-to-classes>
要素は、パーティションのリソース・アダプタ・クラスのクラス・ロード動作を決定します。
『Oracle WebLogic Serverリソース・アダプタの開発』の「weblogic-ra.xmlスキーマ」を参照してください。
<enable-global-access-to-classes>
がfalseに設定された場合、パーティション・リソース・アダプタ・クラスのクラス・ロード動作は、ドメイン・レベルのリソース・アダプタ・クラスの場合の動作と同じです。
<enable-global-access-to-classes>
がtrueに設定された場合、次のようになります。
リソース・アダプタがドメインにデプロイされると、リソース・アダプタ・クラスは、ドメイン・クラス・ローダーによってロードされます。そのため、リソース・アダプタ・クラスは、他のパーティションのアプリケーションから分離されます。
リソース・アダプタがパーティションにデプロイされると、リソース・アダプタ・クラスは、パーティション・クラス・ローダーによってロードされます。そのため、リソース・アダプタ・クラスは、ドメイン・パーティションおよび他のパーティションのアプリケーションから分離されます。
各パーティションは、リソース・グループ・テンプレートで定義された構成をオーバーライドするために使用できるデプロイメント・プランを指定できます。リソース・アダプタ・アプリケーションは、デプロイメント時にこのデプロイメント・プランを適用する必要があります。
「アプリケーション構成のオーバーライド」を参照してください。
AppDeploymentConfigMBean
のplan-path
属性を使用してアプリケーション・レベルでデプロイメント・プラン・ファイルを指定して、リソース・アダプタの構成をオーバーライドできます。パーティションのリソース・グループがリソース・グループ・テンプレートのリソース・アダプタを参照する場合、アプリケーション・レベルで指定したデプロイメント・プランのマクロ置換を使用して、リソース・グループ構成をオーバーライドできます。次の例は、デプロイメント・プランのファイル名のマクロを使用したリソース・グループ・テンプレートを示しています。2つのパーティション(HR
およびFinance
)があります。
<domain> <resource-group-template> <name>RGT1</name> <app-deployment> <name>mailra</name> <name>my_ra</name> <module-type>rar</module-type> <source-path>/some/directory/sample_connector.rar</source-path> <deployment-order>120</ deployment-order > <plan-path>${MYRA-PLAN-FILE}</plan-path> </app-deployment> ... </resource-group-template> <partition> <name>HR</name> <resource-group> <name>RG1</name> <resource-group-template>RGT1</resource-group-template> </resource-group> <partition-properties> <partition-property> <name>MYRA-PLAN-FILE</name> <value>/apps/plans/hr/my_ra-plan.xml</value> </partition-property> </partition-properties> ... </partition> <partition> <name>Finance</name> <resource-group> <name>RG2</name> <resource-group-template>RGT1</resource-group-template> </resource-group> <partition-properties> <partition-property> <name>MYRA-PLAN-FILE</name> <value>/apps/plans/Finance/my_ra-plan.xml</value> </partition-property> </partition-properties> ... </partition> </domain>
@ConnectorResourceDefinition
および@AdministeredObjectDefinition
注釈を使用して、Webモジュール、EJBモジュール、または同等のアプリケーション・デプロイメント・ディスクリプタで、リソース・アダプタのリソースを定義できます。これらの注釈を使用すると、マルチテナント環境で次の条件が該当します。
@ConnectorResourceDefinition
および@AdministeredObjectDefinition
または同等のデプロイメント・ディスクリプタがドメイン・レベルのアプリケーションで定義された場合、関連するリソース・アダプタはドメイン・レベルでデプロイされる必要があります。
@ConnectorResourceDefinition
および@AdministeredObjectDefinition
または同等のデプロイメント・ディスクリプタがパーティション・レベルのアプリケーションで定義された場合、関連するリソース・アダプタは同じパーティションでデプロイされる必要があります。
スタンドアロン・リソース・アダプタは、同じパーティションのリソース・グループで共有されます。これはリソース・グループで定義できますが、そのリソース・グループによって排他的に占有されることはありません。リソース・グループRG1が、リソース・グループRG2で定義されたスタンドアロン・リソース・アダプタRA2に依存していると仮定した場合、RG2が新しいクラスタに移行されると、RG1は同時にそのクラスタに移行される必要があります。それ以外の場合、RG1は機能しません。
リソース・グループ移行を行う場合、1つのリソース・アダプタと関連するすべてのアプリケーションを同じリソース・グループで定義することをお薦めします。