4 WebLogic ServerでのCoherenceアプリケーションのデプロイ
GARの作成の詳細は、「Coherenceアプリケーションのパッケージ化」を参照してください。
この章の内容は次のとおりです。
- Coherenceのデプロイメント層の理解
Coherenceは、WebLogic Serverドメイン内の層に配置されます。通常は、データを格納するデータ層、キャッシュされたデータを消費するアプリケーション層、およびリモート・クライアント(非クラスタ・メンバー)がクラスタを使用可能にするためのプロキシ層があります。 - 管理対象Coherenceサーバーへのアプリケーションのデプロイ
CoherenceアプリケーションGARには、Coherenceアプリケーションのアーティファクトが格納され、デプロイメント・ディスクリプタが含まれています。GARはスタンドアロン・モジュールとして、またはWebLogic Serverデプロイメント・ツールを使用するEARの一部としてデプロイできます。 - 共有ライブラリとしてのCoherenceアプリケーションのデプロイ
Coherenceアプリケーションは、グリッド・アーカイブ(GAR)としてパッケージ化され、単層または複数層ドメインの共有ライブラリとしてデプロイされます。 - Coherenceアプリケーションからの共有ライブラリの参照
GARモジュールではWebLogic Serverにデプロイされる共有ライブラリを使用できます。 - ローリング再デプロイの実行
複数のGARモジュールが同じWebLogic Serverクラスタをターゲットとする場合、これらのモジュールはすべての管理対象Coherenceサーバーに同時に再デプロイされます。 - アプリケーション・クラス・ローダーからのCoherenceのロード
Coherenceライブラリ(coherence.jar
)は、WebLogic Serverのシステム・クラスパスに含まれています。常にこのライブラリを使用し、coherence.jar
ライブラリをWebアプリケーションの/lib
ディレクトリに含めないことがベスト・プラクティスです。 - WebLogic ServerでのCoherenceアプリケーションの保護
管理対象CoherenceサーバーにデプロイされたCoherenceアプリケーションは保護できます。
Coherenceのデプロイメント層の理解
アプリケーション層およびプロキシ層とは別の専用ストレージ層を使用することが、Coherenceクラスタの最適なパフォーマンスを確保するためのベスト・プラクティスです。
デプロイメント層には、Coherenceクラスタの一部である管理対象サーバーが含まれます。Coherenceクラスタの一部である管理対象サーバーは、管理対象Coherenceサーバーと呼ばれます。通常、Coherenceの層は、それぞれWebLogic Serverクラスタと関連付けられます。WebLogic Serverクラスタを使用することで、アプリケーションのデプロイメントおよびデプロイメント・トポロジの管理が簡略化されます(特に大規模クラスタの場合)。ただし、各層の管理対象Coherenceサーバーは、必要に応じて個別に管理できます。
デプロイメントおよび簡単なテスト中に、Coherenceのデプロイメント層を配置するのは現実的ではありません。この場合、Coherenceアプリケーションは単一の管理対象サーバーにデプロイすることが可能で、単一サーバー・クラスタがデフォルトのクラスタ設定で自動的に作成されます。
『Oracle WebLogic Serverクラスタの管理』を参照してください。
管理対象Coherenceサーバーへのアプリケーションのデプロイ
CoherenceアプリケーションGARモジュールは、JavaEEモジュールと同様にデプロイされ、WebLogic Server管理コンソール、Oracle WebLogic Scripting Tool (WLST)、WebLogic Server Deployer
クラスおよびWebLogic Server <wldeploy>
ANTターゲットのうち、任意のWebLogic Serverデプロイメント・ツールを使用してデプロイできます。
『Oracle WebLogic Server Administration Consoleオンラインヘルプ』を参照してください。
『WebLogic Scripting Toolの理解』を参照してください。
『Oracle WebLogic Serverへのアプリケーションのデプロイ』を参照してください。
ノート:
GARを含むEARの製品の再デプロイは、ストレージが無効化されたクラスタ・クライアントでのみサポートされます。また、GARのコードに対する変更には既存のデプロイメントとの後方互換性が必要です。たとえば、変更しているエンティティ・クラスにEvolvable
インタフェースを実装する必要があります。『Oracle WebLogic Serverへのアプリケーションのデプロイ』を参照してください。
GARモジュールは、スタンドアロン・モジュールとして、またEARの一部としてデプロイする必要があります。次に、Coherence層を使用するWebLogic Serverドメインに、GARモジュールがどのようにデプロイされるかを示します。『Oracle WebLogic Serverクラスタの管理』を参照してください。
-
データ層 – スタンドアロンのGARをデータ層の各管理対象Coherenceサーバーにデプロイします。データ層がWebLogic Serverクラスタとして設定されている場合、そのクラスタにGARをデプロイし、各管理対象Coherenceサーバーにモジュールをコピーします。
-
アプリケーション層 – クライアント実装(Webアプリケーション、EJBなど)およびGARの両方を含むEARを、クラスタ内の各管理対象Coherenceサーバーにデプロイします。アプリケーション層がWebLogic Serverクラスタとして設定されている場合、そのクラスタにEARをデプロイし、各管理対象Coherenceサーバーにモジュールをコピーします。
-
プロキシ層 – スタンドアロンのGARをプロキシ層の各管理対象Coherenceサーバーにデプロイします。GAR内にパッケージ化されるキャッシュ構成ファイルには、プロキシ・サービスの定義が含まれている必要があります。アプリケーション層がWebLogic Serverクラスタとして設定されている場合、そのクラスタにGARをデプロイし、各管理対象Coherenceサーバーにモジュールをコピーします。
-
Extendクライアント層 – Extendクライアント実装(Webアプリケーション、EJBなど)およびGARを含むEARを、Extendクライアントをホストする各管理対象サーバーにデプロイします。クライアントのキャッシュ構成ファイルは、プロキシ・サーバーのアドレスを定義するリモート・キャッシュ・サービス定義を含む必要があります。Extendクライアント層をWebLogic Serverクラスタとして設定する場合は、EARをクラスタにデプロイします(WebLogicデプロイメント・インフラストラクチャはそのモジュールを各管理対象Coherenceサーバーにコピーします)。
共有ライブラリとしてのCoherenceアプリケーションのデプロイ
スタンドアロンのGARを、共有ライブラリとしてデプロイし、複数のEARファイルから参照することができます。共有ライブラリおよびそのデプロイメントの一般的な情報は、Oracle WebLogic Serverアプリケーションの開発の共有Java EEライブラリおよびオプション・パッケージの作成を参照してください。
実行時にGARを使用するには、EAR内のweblogic-application.xml
デプロイメント・ディスクリプタにGARへの参照が含まれている必要があります。たとえば:
<weblogic-application> <library-ref> <library-name>ExampleGAR</library-name> </library-ref> </weblogic-application>
この構成は、アプリケーション層およびデータ層の両方が単一の管理対象Coherenceサーバー上にある、単一層ドメインで機能します。これに対し、複数層ドメインでは、共有ライブラリとしてデプロイされたGARが期待どおりに起動する記憶域が有効なメンバーとなるようにするには、追加の構成が必要です。
複数層ドメインでGARを共有ライブラリとしてデプロイするには:
Coherenceアプリケーションからの共有ライブラリの参照
weblogic-coh-app.xml
デプロイメント・ディスクリプタの<library-ref>
ノード内で共有ライブラリを参照し、GARモジュールの/META-INF
ディレクトリでデプロイメント・ディスクリプタをパッケージ化します。
ディスクリプタの使用可能な要素の詳細なリファレンスは、weblogic-coh-app.xmlデプロイメント・ディスクリプタの要素を参照してください。たとえば:
<?xml version="1.0"?>
<weblogic-coh-app
xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-coh-app">
<library-ref>
<library-name>mySharedLibrary</library-name>
<specification-version>2.0</specification-version>
<implementation-version>8.1beta</implementation-version>
<exact-match>false</exact-match>
</library-ref>
</weblogic-coh-app>
ローリング再デプロイの実行
管理対象Coherenceサーバーすべてで同時再デプロイメントを利用する場合、インメモリー・キャッシュ・データ損失を防ぐプロビジョニングはありません。
ノート:
GARモジュールをすべての管理対象Coherenceサーバーに同時に再デプロイする際に、永続性またはライトスルーのキャッシュ・データの損失が起こらないようにするには、サービスの一時停止機能を利用します。サービスは、アクティブ永続性モード、非同期永続性タスク、読取り/書込みバッキング・マップのライトビハインド・キューへの入力、その他の非同期操作を含め、すべてのデータが完全に書き込まれた後にのみ一時停止状態とみなされます。未処理の操作が完了し、一時停止したサービスに対して新しい操作は許可されません。したがって、Oracleでは、管理対象のすべてのCoherenceサーバーへのGARモジュールの完全な再デプロイを制御するために、CoherenceのClusterMBean
操作のsuspendService("impactedService")
を実行することをお薦めします。これにより、すべての管理対象CoherenceサーバーからGARモジュールをアンデプロイする前に、潜在的な非同期操作を使用した各サービスが正常に一時停止します。
ローリング再デプロイは、WebLogic Serverクラスタ全体でGARを更新するための技術であり、各管理対象Coherenceサーバーに個別にGARを再デプロイし、すべてのサーバーを循環します。ローリング再デプロイによって、キャッシュ・データはGARの再デプロイ中に再配分できます。そうしない場合、GARがすべてのキャッシュ・サーバーに同時に再デプロイされると、インメモリー・キャッシュ・データのみが失われます。
ノート:
サーバーをターゲットとするデプロイメント間でパーティション化されたサービスのStatusHA
メトリックを常に確認して、MACHINE_SAFE
ステータスを確保します。このメトリックの詳細は、『Oracle Coherenceのマネージメント』を参照してください。
ローリング再デプロイを実行するには、GARをspecifiedtargetsonly
オプションを使用してデプロイする必要があり、これによってこのGARに対する以降の更新は、このGARを含むすべてのターゲットではなく、現在のターゲットでのデプロイメントとなります。specifiedtargetsonly
オプションはWebLogic Server管理コンソールからは使用できないため、WLST、weblogic.Deployer
または<wldeploy>
ANTターゲットを使用して指定する必要があります。
GARファイルのフルパスおよび名前は、そのGARの最初のデプロイ時に使用したパスおよび名前と正確に一致する必要があります。異なるパスまたは名前を使用すると、GARの名前に-1
、-2
、または-1
および-2
が追加され、ローリング再デプロイが適切に機能しなくなります。さらに、GARの最初のデプロイ時にupload=true
オプションを使用した場合は、upload=true
オプションを使用して再デプロイする必要があります(そうしない場合、ローリング再デプロイは適切に機能しません)。
Coherenceアプリケーションの再デプロイの(WLSTスクリプトを含む)完全な例(MACHINE_SAFE
ステータスの確保を含む)については、Coherenceの例(WebLogic Serverの例の一部)を参照してください。この例を参照するには、WebLogic Serverのカスタム・インストールを実行して、Serverの例のインストールを選択します。『Oracle WebLogic Serverの理解』を参照してください。
WLST
deploy('MyCohApp', '/myapps/MyCohApp.gar', 'server1', specifiedTargetsOnly='true')
<wldeploy> ANTターゲット
<wldeploy user="${admin.username}" password="${admin.password}" adminurl="t3://${admin.host}:${admin.port}" debug="false" action="deploy" name="Coherence GAR" source="${gar.filename}" targets="ms3" specifiedtargetsonly="true" failonerror="true"/>
weblogic.Deployer
java weblogic.Deployer -adminurl t3://localhost:7001 -username username -password password -targets ms3 -deploy -name MyCohApp /myapps/MyCohApp.gar -specifiedtargetsonly
アプリケーション・クラス・ローダーからのCoherenceのロード
coherence.jar
)は、WebLogic Serverのシステム・クラスパスに含まれています。常にこのライブラリを使用し、coherence.jar
ライブラリをWebアプリケーションの/lib
ディレクトリに含めないことがベスト・プラクティスです。高度なユースケースではWebアプリケーションにcoherence.jar
ライブラリを含めますが、その場合はweblogic.xml
ファイルで<prefer-application-packages>
および<prefer-application-resources>
要素を使用してCoherenceリソースを定義する必要があります。たとえば:
<container-descriptor> <prefer-application-packages> <package-name>com.tangosol.*</package-name> <package-name>com.oracle.coherence.common.**</package-name> </prefer-application-packages> <prefer-application-resources> <resource-name>com.tangosol.*</resource-name> <resource-name>com.oracle.coherence.common.*</resource-name> <resource-name>coherence-*.xml</resource-name> <resource-name>coherence-*.xsd</resource-name> <resource-name>tangosol-*.xml</resource-name> <resource-name>tangosol.properties</resource-name> <resource-name>tangosol.cer</resource-name> <resource-name>tangosol.dat</resource-name> <resource-name>internal-txn-cache-config.xml</resource-name> <resource-name>txn-pof-config.xml</resource-name> <resource-name>pof-config.xml</resource-name> <resource-name>management-config.xml</resource-name> <resource-name>processor-dictionary.xml</resource-name> <resource-name>reports/*</resource-name> </prefer-application-resources> </container-descriptor>
WebLogic ServerでのCoherenceアプリケーションの保護
Coherenceアプリケーションの保護の詳細は、『Oracle Coherenceの保護』を参照してください。