このタスクを使用して、Web モジュールの WEB-INF ディレクトリーまたはエンタープライズ Bean の META-INF ディレクトリーにある、cachespec.xml 内でキャッシュ可能オブジェクトを定義します。
このタスクについて
グローバル cachespec.xml は、
アプリケーション・サーバー・プロパティー・ディレクトリーにも保管できますが、
デプロイメント・モジュールでキャッシュ構成ファイルを配置する方法をお勧めします。
cachespec.xml ファイルのルート・エレメントは <cache> であり、
これには <cache-entry> エレメントが含まれています。
<cache-entry> エレメントは、
<cache> エレメントまたは <cache-instance> エレメント内でネストすることができます。
<cache> エレメント内でネストされている <cache-entry> エレメントは、デフォルトのキャッシュ・インスタンスにキャッシュされます。
<cache-instance> エレメントにある <cache-entry> エレメントは、
<cache-instance> エレメントの「名前」属性に指定されるインスタンスにキャッシュされます。
<cache-entry> エレメント内部にあるパラメーターは、
以下のタスクを完了して、cachespec.xml ファイルを用いて動的キャッシュを使用可能にするためのものです。
プロシージャー
- cachespec.xml ファイルを開発します。
- キャッシング構成ファイルを作成します。
<app_server_root>/properties ディレクトリーで、
cachespec.sample.xml ファイルを見付けます。
- cachespec.sample.xml ファイルを、Web モジュールの WEB-INF ディレクトリーまたはエンタープライズ Bean の META-INF ディレクトリーにある cachespec.xml にコピーします。
- キャッシュ可能オブジェクトの識別に必要な cache-entry エレメントを定義します。
エレメントのリストについては、トピックcachespec.xml ファイル
を参照してください。
- キャッシュ ID 規則を作成します。
オブジェクトをキャッシュに入れるには、WebSphere Application Server が、
そのオブジェクトのさまざまな呼び出しについて固有の ID を生成する方法を認識していなければなりません。
そのタスクは <cache-id> エレメントが実行します。キャッシュ・エントリーごとに複数の cache-ID 規則を
持つことができます。これらの規則は、1 つの規則が空でない cache-ID 規則を戻すか、
あるいは実行する規則がなくなるまで、順次実行されます。
有効なキャッシュ ID を生成する cache-ID 生成規則がない場合、
そのオブジェクトはキャッシュに入れられません。
以下のいずれかの方法で、キャッシュ ID を開発してください。
- キャッシュ・エントリーのキャッシュ・ポリシーに定義されている <component> エレメントを使用します (推奨)。
<component> エレメントについての詳細は、cachespec.xml ファイル
を参照してください。
- カスタム Java コードを作成して、入力変数とシステム状況に基づいて ID をビルドします。ID ジェネレーターを使用するようにキャッシュ・エントリーを構成するには、
<idgenerator> タグを使用して、XML ファイルで IdGenerator を指定します。
以下に例を示します。
<cache-entry>
<class>servlet</class>
<name>/servlet/CommandProcessor</name>
<cache-id>
<idgenerator>com.mycompany.SampleIdGeneratorImpl</idgenerator>
<timeout>60</timeout>
</cache-id>
</cache-entry>
- 依存関係 ID 規則を指定します。 依存関係 ID エレメントを使用して、追加のキャッシュ・グループ ID を指定します。
この ID は、複数のキャッシュ・エントリーを同じグループ ID に関連付けます。
依存関係 ID は、依存関係 ID 基本ストリングと、そのコンポーネント・エレメントにより戻される値
を連結して生成されます。必須のコンポーネントがヌル値を戻す場合、
完全な依存関係 ID は生成も使用もされません。
動的キャッシュ API を使用して依存関係 ID を明示的に妥当性検査をしたり、
別のキャッシュ・エントリーの <invalidation> エレメントを使用したりすることもできます。
キャッシュ・エントリーごとに、複数の依存関係 ID 規則が存在する場合もあります。
すべての依存関係 ID 規則は、個別に実行されます。
<component> エレメントのリストについては、cachespec.xml ファイル
を参照してください。
- 該当する場合、このオブジェクト開始の副次作用として、
その他のキャッシュ・エントリーを無効にします。
無効化規則は、依存関係 ID とまったく同じ方法で定義できます。
ただし、無効化規則が生成する ID は、
同じ依存関係 ID を持つキャッシュ・エントリーを無効にするために使用されます。
無効化 ID は、
無効化 ID 基本ストリングと、そのコンポーネント・エレメントにより戻される値とを連結することで生成されます。
必須のコンポーネントがヌル値を戻した場合、
完全な無効化 ID は生成されず、無効化は発生しません。
各 cache-entry に複数の無効化規則があることもあります。
すべての無効化規則は、個別に実行されます。
- ご使用のキャッシュ・ポリシーが正常に作動しているかを確認してください。
アプリケーションの実行中は、
cachespec.xml ファイル内のポリシーを変更することができます。
動的キャッシュは、更新済みファイルを自動的に再ロードします。
静的コンテンツをキャッシュし、キャッシュ・ポリシーをはじめてアプリケーションに追加している場合、
アプリケーションを再始動する必要があります。
新規キャッシュ・ポリシーをアクティブにするために、アプリケーション・サーバーを再始動する必要はありません。詳しくは、キャッシュ可能ページの検査
を参照してください。
次の作業
通常は、1 つの
cachespec.xml ファイル内で複数
の
<cache-entry> エレメントを宣言します。
cachespec.xml の新規バージョンが検出されると、
古いポリシーは置き換えられます。
古いポリシー・ファイルによってキャッシュに入れられたオブジェクトは、
そのキャッシュ内で自動的に無効になることはありません。
これらのオブジェクトは、新規ポリシーにより再利用されるか、
あるいはその置換アルゴリズムによってキャッシュから除去されます。
キャッシュ・エントリーが生成する 3 つの ID (キャッシュ、依存関係、無効化) のそれぞれについて
、<cache-entry> は複数のエレメントを含めることができます。動的キャッシュは
、<cache-id> 規則を順番に実行します。最初に ID の生成に成功した規則が、
その出力をキャッシュするために使用されます。オブジェクトがキャッシュされる場合は、
個々の <dependency-id> エレメントが実行され、
そのキャッシュ・エントリー用の依存関係 ID のセットが作成されます。最後に、
オブジェクトがキャッシュされるかどうかに関係なく、個々の <invalidation> エレメントが実行され、動的キャッシュによって無効化される ID のリストが作成されます。