Oracle® Fusion Middleware Oracle WebCenter PortalおよびOracle JDeveloperでのポータルの開発 11gリリース1 (11.1.1.8.3) E49666-03 |
|
前 |
次 |
この章では、パーソナライズ用のキャッシュ管理について説明します。
この章の内容は、次のとおりです。
WebCenter Portalでは、Oracle Coherenceを使用して、パーソナライズ機能用のサーバー側キャッシュを管理します。すべてのWebCenterのインストールには、ローカルのCoherenceライセンスが提供されます。パーソナライズは、Coherenceが使用するさらに複雑な他のモードをサポートしますが、その場合は、適切なCoherenceライセンスを購入する必要があります。
この章では、シナリオやデータ・プロバイダなどの、WebCenter Portalのパーソナライズ機能でのキャッシュの使用方法について説明します。
注意: これは、キャッシュの概念および手法の基礎を理解していることを前提としています。この章全般では、これらの概念について説明することはありません。また、Oracle Coherenceについても精通していることを前提としています。Coherenceの詳細は、『Oracle Coherenceスタート・ガイド』を参照してください。 また、第66章「Oracle WebCenter Portalアプリケーションのパーソナライズ」で説明されている、WebCenter Portalパーソナライズの概念および機能についても、精通していることが前提です。 |
WebCenter Portalでは、パーソナライズでの使用のため、2つのCoherenceキャッシュ構成ファイルが提供されています。これらのファイルの使用方法は、この項で説明します。
注意: WebCenter Personalization Server (WCPS)によってインスタンス化されたキャッシュ・ファクトリはすべて、WCPSのクラス・ローダーに固有のものです。 |
キャッシュ構成ファイルは、次の場所にあります。
$ORACLE_HOME/user_projects/applications/<domain>/conductor-extensions-library/WEB-INF/classes
カスタム構成ファイルを作成した場合は、これと同じディレクトリに格納することが最善の方法です。一方で、これらのファイルはWCPSのWebアプリケーションのクラスパス内であれば、どこでも配置できます。新しいクラスを認識させるには、WCPS Webアプリケーションを再デプロイするか、サーバーを再起動する必要があります。第73.2.2.3項「カスタム・キャッシュ構成ファイルの作成」も参照してください。
この項では、パーソナライズ機能で使用される、各キャッシュ構成ファイルと、カスタム・キャッシュ構成ファイルの作成について説明します。
キャッシュ構成ファイルwcps-coherence-cache-config.xml
は、プロパティ・サービス、コンダクタおよびデータ・プロバイダの中核機能などの、内部の統合コンポーネントをサポートします。
注意: この構成ファイル内のキャッシュの名前は変更しないでください。ただし、このファイル内のキャッシュ構成パラメータは変更できます。 |
キャッシュ構成ファイル、wcps-dataprovider-cache-config.xml
では、データ・プロバイダと関連付けられているキャッシュのアドレスが指定されています。このファイルでは、ワイルドカード・パターンが使用されており、wcps-dp-small-content
やmy-custom-cache
などのいずれのパターンを使用しても、利用者が固有のキャッシュを持てるようにしています。たとえば、wcps-dp-medium-*
のようなワイルドカード・パターンは、wcps-dp-small-content
またはwcps-dp-small-ebs
などのキャッシュ名を指定すると、解決されます。
デフォルトのデータ・プロバイダの構成は、ニーズに合うように変更するか、カスタム・データ・プロバイダをサポートするように、新しいエントリを追加しても構いません。既存のデフォルトの構成へのいかなる変更でも、使用する環境にデプロイされた他のカスタム・データ・プロバイダに影響する可能性があることに注意してください。
デフォルトのデータ・プロバイダのキャッシュ構成には、次のものが含まれます。
メモリーに実装されたローカル・キャッシュ
LRU削除ポリシー
小容量: 100エントリ、デフォルトは1時間のTTL
中容量: 1000エントリ、デフォルトは1時間のTTL
大容量: 10000エントリ、デフォルトは1時間のTTL
注意: Coherenceライセンス機能のアップグレードをサポートするため、これらの構成が変更される場合があります。 |
このキャッシュ構成ファイルはCoherenceパラメータ・マクロを利用するため、特定のニーズに合わせて容易に変更できます。パラメータに固有のCoherenceドキュメントへのリンクは、構成ファイルそのものの中で提供されています。
利用者は、この構成ファイルに追加のエントリを構成できます。これらのエントリは、パーソナライズ・キャッシュAPIで使用できるようになります。第73.3項「パーソナライズ・コンポーネントでのキャッシュの使用」を参照してください。
特定のユース・ケースに対処するため、カスタムCoherenceキャッシュ構成ファイルを作成できます。Coherenceキャッシュ構成ファイルを、次の一般的な規則に準拠させることをお薦めします。
キャッシュ構成ファイルを次の場所に配置すること。
$ORACLE_HOME/user_projects/applications/<domain>/conductor-extensions-library/WEB-INF/classes
データ・プロバイダやファンクション・プロバイダなどの、サーバー側のパーソナライズ・コンポーネントで使用されるキャッシュのみを参照すること。これらのコンポーネントの詳細は、第67章「カスタム・データ・プロバイダの実装」および第68章「カスタム・ファンクション・プロバイダの実装」を参照してください。
注意: 実際は、キャッシュ構成ファイルは、WCPS Webアプリケーションのクラス・ローダーから参照可能であれば、どこにでも配置できます。このファイルを上のディレクトリに配置すると、他のWCPSキャッシュ構成ファイルとの整合性を保てます。ただし、キャッシュ構成ファイルを異なる方法で定義およびパッケージ化する場合もあります。 |
CoherenceCacheFactoryは、URIを使用してファイルをロードするため、キャッシュ構成ファイルは、データ・プロバイダのJARファイルの一部としても、ファイル・システム上の任意の場所でもパッケージ化できます。CoherenceCacheFactoryは、データ・プロバイダのプログラムまたはWCPSサーバーにデプロイされたその他のクラスのプログラムによって使用されます。第73.3.2項「CoherenceCacheFactoryの使用」を参照してください。
注意: データ・プロバイダのJARファイルは、次の場所にあります。
データ・プロバイダのパッケージ化およびデプロイの詳細は、第67章「カスタム・データ・プロバイダの実装」を参照してください。 |
新しいクラスを認識させるには、WCPS Webアプリケーションを再デプロイするか、サーバーを再起動する必要があります。
データ・プロバイダ、ファンクション・プロバイダおよびカスタム・データ・プロバイダなどのパーソナライズ・コンポーネントは、コンテキストにより、2つの方法の中の1つの方法でCoherenceと連携します。
CacheFunctionProvider: シナリオのコンテキスト内で使用可能または、任意のデータ・プロバイダでプログラムにより使用可能なメソッドを含みます。ファンクション・プロバイダは、シナリオのコンテキスト内のデータに対する操作を行います。第68.1項「ファンクション・プロバイダの概要」も参照してください。
CoherenceCacheFactory: WCPSにデプロイされたデータ・プロバイダおよび他のクラスは、このファクトリ・クラスを使用して、プログラムによりキャッシュを実装します。
CacheFunctionProviderは、シナリオ内からキャッシュを管理するメソッドを提供します。このファンクション・プロバイダは、CoherenceCacheFactoryクラスに委任し、複数の簡便性メソッドをインクルードします。
キャッシュ・ファンクション・プロバイダのメソッドについては、第69章「ファンクション・プロバイダ・リファレンス」の「キャッシュ・メソッド」で説明されています。
CacheFunctionProviderの接頭辞は、cache
(シナリオ・エディタの「式ビルダー」ダイアログに表示される名前)です。図73-1に、「式ビルダー」ダイアログでのキャッシュ・ファンクション・プロバイダを示します。
例73-1は、キャッシュ・ファンクション・プロバイダのメソッド、getMediumCache()を使用するシナリオのXML構造をリストしています。最初に、キャッシュが返され、変数に格納されます。その後、その変数を使用してキャッシュから特定の値が返されます。
例73-1 シナリオでのキャッシュ・ファンクション・プロバイダの使用
<!-- Check cache first, using CacheFunctionProvider --> <assign-variable> <variable>userIdCache</variable> <expression>${cache:getMediumCache('userIdCache')}</expression> </assign-variable> <assign-variable> <variable>userId</variable> <expression>${cache:get(userIdCache,username)}</expression> </assign-variable>
例73-2に、CacheFunctionProviderのメソッドをプログラムを使用してコールする方法を示します。必ず、次をインポートしてください。oracle.wcps.dataprovider.base.CacheFunctionProvider
例73-2 Javaクラスでのキャッシュ・ファンクション・プロバイダの使用
NamedCache myCache = CacheFunctionProvider.getMediumCache("userIdCache"); String userId = (String)myCache.get("jpalmer");
例73-3に、カスタム・キャッシュの使用例を示します。この例では、返されるキャッシュには接頭辞がなく、完全なキャッシュ名ではありません。
WCPSにデプロイされたデータ・プロバイダおよび他のクラスは、このファクトリ・クラスを使用して、プログラムによりキャッシュを実装します。このクラスは、デプロイ先のWebアプリケーションにスコープ設定されています。
CoherenceCacheFactoryのコールするメソッドは1つです。
public static NamedCache getCache(String cacheConfigFile, String cacheName)
例73-4は、前の第73.2.2.3項「カスタム・キャッシュ構成ファイルの作成」で説明したベスト・プラクティスに従って、WCPSのクラスパスにキャッシュ構成ファイルがある場合の、getCache()のコール方法を示しています。
例73-4 クラスパスにある構成ファイルを使用したgetCache()のコール
NamedCache myCache = CoherenceCacheFactory.getCache("content-cache-config.xml", "userIdCache"); String userId = (String)myCache.get("jpalmer");
例73-5は、ファイル・システムの別の場所に、キャッシュ構成ファイルが配置されている場合のgetCache()のコール方法を示しています。
この項では、構成ファイルでのキャッシュの構成方法について説明します。wcps-datatprovider-cache-config.xml
に構成されている、事前構成済のキャッシュおよびカスタム・キャッシュについて説明します。その後、キャッシュが独自の構成ファイルを持つ場合について説明します。
構成ファイルには、事前構成済キャッシュ(小容量、中容量、大容量)が含まれています。これらのキャッシュには、キャッシュ・ファンクション・プロバイダ(第73.3.1項「キャッシュ・ファンクション・プロバイダ」参照)を介してアクセスできます。アクセス・メソッドについては、第69章「ファンクション・プロバイダ・リファレンス」の「キャッシュ・メソッド」で説明されています。これらには次のものがあります。
getSmallCache(String cacheName)
getMediumCache(String cacheName)
getLargeCache(String cacheName)
注意:
|
カスタム・キャッシュは、新しいエントリがwcps-dataprovider-cache-config.xml
に追加されていることを前提にしています。構成ファイルに指定されたとおりに構成された、cacheName (接頭辞なし)を使用してキャッシュを返します。
wcps-dataprovider-cache-config.xml
に構成されたカスタム・キャッシュを返すために使用される、キャッシュ・ファンクション・プロバイダ・メソッドは、次のとおりです。
getCustomCache(String cacheName)
詳細は、第69章「ファンクション・プロバイダ・リファレンス」の「キャッシュ・メソッド」を参照してください。
WCPS Webアプリケーションのクラス・ローダーで、構成ファイルconfigFileが使用可能である必要があります。第73.2.2.3項「カスタム・キャッシュ構成ファイルの作成」も参照してください。
カスタム・キャッシュ構成ファイルに構成されたキャッシュを返すために使用される、ファンクション・プロバイダのメソッドは、次のとおりです。
getCache(String
myConfigFile.xml
, String cacheName
)
注意: キャッシュ構成ファイルは、アプリケーションのクラスパス内に存在する必要があります。言い換えると、コールする側のクラスパス内であれば、どこにあっても構いません。 |
詳細は、第69章「ファンクション・プロバイダ・リファレンス」の「キャッシュ・メソッド」を参照してください。
キャッシュ名は、データ・プロバイダ内にハードコードできます。または、キャッシュ名をパラメータとして、wcps-connections.xml
プロバイダ構成ファイルに設定できます。このファイルの詳細は、第67.5.6項「WCPS接続構成ファイルの更新」で説明しています。
ヒント: キャッシュ名を接続パラメータとして設定することの利点は、実行時にキャッシュ名を変更できることです。 |
例73-6は、wcps-connnections.xml
へのキャッシュの構成方法を示しています。<connection>要素には、2つのプロパティを追加する必要があります。
<cacheName>: キャッシュの名前を指定します。この例では、名前はdemo-cache
です。
<configFileUri>: ファイル・システム上のキャッシュ構成ファイルの場所を指定します。この例では、この値はfile:///mydir/demo-cache.xmlです。
この例では、<connection>
要素には、demo-cache
という値の<cache-name>
プロパティが設定されています。
例73-6 データ・プロバイダの接続構成
<connection> <connection-name>TestConnection</connection-name> <connection-type>my.test.connection</connection-type> <namespace>default</namespace> <properties> <property> <name>cacheName</name> <value>demo-cache</value> </property> <property> <name>configFileUri</name> <value>file:///Users/jpalmer/demo-cache.xml</value> </property> </properties> </connection>
Coherenceには、そのキャッシュを監視するためのMBeanコンソールが用意されています。サーバーのプロパティを設定して、この機能を有効にする方法の詳細は、「JMXを使用したOracle Coherenceの管理」を参照してください。