WebSphere Application Server Network Deployment, Version 6.0.x   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows

             目次と検索結果のパーソナライズ化

cachespec.xml ファイル

キャッシュは、サーバーの始動時に cachespec.xml ファイルを構文解析し、 個々の cache-entry エレメントから構成パラメーターのセットを抽出します。 新規サーブレットやその他のキャッシュ可能オブジェクトが初期化されるごとに、 キャッシュは各 cache-entry エレメントを突き合わせて、そのオブジェクトの構成情報を検索します。

cache-entry エレメントは、ルート・キャッシュ・エレメント内か、cache-instance エレメント内にあります。 ルート・エレメント内にあるキャッシュ・エントリーはデフォルトのキャッシュ・インスタンスでキャッシュされます。 <cache-instance> エレメント内にあるキャッシュ・エントリーは、その特定のキャッシュ・インスタンス内でキャッシュされます。 キャッシュ可能オブジェクトごとに、クラス・エレメントが異なります。 name エレメントを使用して、キャッシュ・ポリシーが参照する特定のオブジェクトを定義できます。

ロケーション

cachespec.xml ファイルを デプロイメント・モジュールと共に配置します。 アセンブリー・ツールを使用して、キャッシュ可能なオブジェクトを定義します。 アプリケーションのアセンブルについて詳しくは、 アプリケーションのアセンブル を参照してください。 グローバル cachespec.xml ファイルは、アプリケーション・サ ーバーのプロパティー・ディレクトリーにも配置できます。

cachespec.dtd ファイルは、 アプリケーション・サーバーの properties ディレクトリーに入っています。cachespec.dtd ファイルは、 cachespec.xml ファイルに存在することができる正当な構造およびエレ メントを定義します。

使用上の注意

Cachespec.xml エレメント

cachespec.xml ファイルのルート・エレメントは cache であり、cache-instance エレメントおよび cache-entry エレメントが含まれます。 cache-entry エレメントを cache-instance エレメント内に配置して、そのキャッシュ・エントリーをデフォルトではないキャッシュ・インスタンスの一部とすることができます。

cache-instance

<cache-instance name="cache_instance_name"></cache-instance>

名前属性 は、管理コンソール内で設定されたキャッシュ・インスタンスの Java Naming and Directory Interface (JNDI) 名です。

cache-instance エレメントごとに、少なくとも 1 つの cache-entry エレメントを含んでいなければなりません。 cache-instance エレメント内で付き合わせたキャッシュ・エントリーを、name 属性で指定したサーブレット・キャッシュ・インスタンス内にキャッシュします。 同一の cache-entry エレメントが複数の cache-instance エレメントに存在する場合は、 最初に一致した cache-entry エレメントが使用されます。

cache-entry

各キャッシュ・エントリーは、そのエントリーを処理するために動的キャッシュが使用する 特定の基本情報を指定しなければなりません。このセクションでは、以下を含む、cachespec.xml ファイルの 個々のキャッシュ・エントリー・エレメントの機能について説明します。
  • class
  • name
  • sharing-policy
  • property
  • cache-id

WebSphere Application Server の現行バージョンでは、 1 つのサーブレットに複数のキャッシュ・ポリシーを定義できます。 例えば、web.xml ファイルで 1 つのサーブレットに複数のマッピングを定義する場合は、 それぞれのマッピングごとにキャッシュ・エントリーを作成できます。

class

<class>command | servlet | webservice | JAXRPCClient | static</class>

このエレメントは必須であり、 アプリケーション・サーバーが残存キャッシュ・ポリシー定義を解釈する方法を指定します。 値 servlet は、WebSphere Application Server サーブレット・エンジン内にデプロイされた、 サーブレットおよび JavaServer Pages (JSP) ファイルを参照します。 webservice クラスは、 Web サービス要求の特別なコンポーネント・タイプを用いてサーブレットを拡張します。 JAXRPCClient は 、Web サービス・クライアント・キャッシュのキャッシュ・エントリーを定義する際に使用されます。値 command は、WebSphere Application Server コマンド・プログラミング・モデルを使用するクラスを参照します。 値 static は、静的コンテンツが含まれたファイルを参照します。 次に示すのは class エレメントの例です。

<class>command</class>
<class>servlet</class>
<class>webservice</class><class>JAXRPCClient</class><class>static</class>

name

<name>name</name>

名前エレメントの以下のガイドラインを使用して、 キャッシュ可能オブジェクトを指定します。
ヒント: cachespec.xml ファイルの優先ロケーションは、properties ディレクトリーではなく Web アプリケーション内になります。

同一のサーブレットを参照する別のマッピングが複数ある場合は、cache-entry 内に複数の name エレメントを指定できます。

次に name エレメントの例を示します。
<name>com.mycompany.MyCommand.class</name>
<name>default_host:/servlet/snoop</name>
<name>com.mycompany.beans.MyJavaBean</name>  
<name>mywebapp/myjsp.jsp</name><name>/soap/servlet/soaprouter</name>
<name>http://remotecompany.com:9080/service/getquote</name><name>mywebapp/myLogo.gif</name>

sharing-policy

<sharing-policy> not-shared | shared-push | shared-pull | shared-push-pull</sharing-policy>

分散キャッシュを持つクラスター内で作業する場合、これらの値で、このオブジェクトから作成されたエントリーの共用特性を決定します。 このエレメントが存在しない場合は、not-shared 値が使用されます。 単一サーバー環境では、not-shared だけが有効な値です。 複製を使用可能にする場合のデフォルト値は not-shared です。このプロパティーは、Edge フラグメント・キャッシング・プロパティーによる Edge Side Include プロセッサーへの分散に影響を及ぼしません。

詳しくは、キャッシュ複製の構成 を参照してください。

説明
not-shared このオブジェクトに対するキャッシュ・エントリーは、 異なるアプリケーション・サーバー間では共用されません。 これらのエントリーには、シリアライズ不可データを含めることができます。 例えば、 キャッシュされたサーブレットは、 シリアライズ不可オブジェクトを要求属性の中に配置することができます (<class> タイプがこれをサポートしている場合)。
shared-push このオブジェクトに対するキャッシュ・エントリーは、 他のアプリケーション・サーバーまたは連携 Java 仮想マシン (JVM) 内の動的キャッシュに自動的に配布されます。 各キャッシュにおいて、エントリーが作成された時点でそのコピーが作成されます。 これらのエントリーには、シリアライズ不可データを保管できません。
shared-pull このオブジェクトに対するキャッシュ・エントリーは、 要求に応じて、複数のアプリケーション・サーバー間で共用されます。 アプリケーション・サーバーが、このオブジェクトのキャッシュの不在を認識した場合、 連携アプリケーション・サーバーに照会して、そのオブジェクトがあるかどうかを調べます。 このオブジェクトのキャッシュされたコピーがどのアプリケーション・サーバーにもない場合、 元のアプリケーション・サーバーは要求を実行してオブジェクトを生成します。 これらのエントリーには、シリアライズ不可データを保管できません。この共用モードはお勧めしません。
shared-push-pull このオブジェクトに対するキャッシュ・エントリーは、 要求に応じて、複数のアプリケーション・サーバー間で共用されます。 アプリケーション・サーバーは、キャッシュ・エントリーを生成すると、 作成したエントリーのキャッシュ ID をすべての連携アプリケーション・サーバーにブロードキャストします。 これにより個々のサーバーは、特定のキャッシュ ID に対するエントリーが存在しているかどうかを認識します。 このようにしてアプリケーション・サーバーは、このエントリーに対する特定の要求に対して、 エントリーを生成するか、どこかほかの場所から取得するかを判別します。 これらのエントリーには、シリアライズ不可データを保管できません。
以下の例では、共用ポリシーを示します。
<sharing-policy>not-shared</sharing-policy>

property

<property name="key">value</property>

ここで、key はこのキャッシュ・エントリー・エレメント用の プロパティーの名前であり、value は対応する値です。

ユーザーは、構成されたサーブレットの記述などのキャッシュ可能オブジェクトにオプショナル・プロパティーを設定することができます。 クラスは、キャッシュ・エントリーの有効なプロパティーを決定します。 現時点では、以下のプロパティーが定義済みです。
プロパティー 有効なクラス
ApplicationName すべて 複数のアプリケーションが共通キャッシュ ID ネーム・スペースを共用できるように、 J2EEName アプリケーション ID をオーバーライドします。
EdgeCacheable Servlet true または false。デフォルトは false です。このプロパティーが true であれば、指定したサーブレットまたは JSP ファイルが Edge Side Include プロセッサーから外部要求されます。サーブレットまたは JSP ファイルがキャッシュ可能であるかどうかは、残りのキャッシュ指定によって決まります。
ExternalCache サーブレット 外部キャッシュ名を指定します。 外部キャッシュ名は、外部キャッシュ・グループ名と一致しなければなりません。
consume-subfragments サーブレット、Web サービス true または false。デフォルトは false です。サーブレットがキャッシュされる場合は、このサーブレットの内容のみが格納され、 インクルードまたは転送される他のフラグメント のプレースホルダーが含まれます。サブフラグメント消費 (CSF) によって、子サーブレットが含まれる場合は内容の保管 を停止しないよう、キャッシュに通知します。親エントリー (CSF とマークされている) には、キャッシュ・エントリーのすべてのフラグメントのすべての内容が含まれるため、インクルードまたは転送は含まれないがエントリーのツリー全体の内容が含まれる、大きいキャッシュ・エントリーが作成されます。 Consume-subfragments により、アプリケーション・サーバーの処理のかなりの量が節約できますが、 通常、外部 HTTP 要求に、組み込まれたフラグメントのツリー全体の決定に必要なすべての情報が含まれる場合にのみ役立ちます。
do-not-consume サーブレット、Web サービス true または false。デフォルトは false です。フラグメントの親が true に設定された消費サブフラグメント・プロパテ ィーを持つとき、子フラグメント・コンテンツは、親のキャッシュ・エントリーに保管されます。 Do-not-consume (DNC) はキャッシュに、親キャッシュ・エントリー内のこ のフラグメントのコンテンツを保管するのを停止して、インクルードまたは フォワードの代わりにプレースホルダーを作成するようにと伝えます。
alternate_url Servlet サーブレットまたは JSP ファイルの呼び出しに使用される代替 URL を指定します。 プロパティーは、EdgeCacheable プロパティーもキャッシュ・エントリーに設定されている場合にのみ有効です。
persist-to-disk すべて true または false。デフォルトは true です。 このプロパティーが false に設定されている場合、オーバーフローまたはサーバー停止が発生してもキャッシュ・エントリーはディスクに書き込まれません。
save-attributes サーブレット true または false。デフォルトは true です。 このプロパティーが false に設定されている場合、要求属性はキャッシュ・エントリーと一緒に保管されません。
<exclude> エレメントを使用して、保管属性プロパティーには適用されない要求属性を指定します。 例えば、attr1 属性のみをキャッシュ・エントリーと一緒に保管するには、以下を行います。
<property name="save-attributes">false
<exclude>attr1</exclude>
</property>

キャッシュ・エントリー内の attr1 属性 以外のすべての属性を保管するには、先の例でプロパティーを true に設定します。 <exclude> エレメントを使用しない場合は、すべての要求属性がキャッシュ・エントリーで保管されるか、または全く保管されません。

delay-invalidations コマンド true または false。このプロパティーが true に設定されている場合、 このキャッシュ・エントリー内の無効化規則に基づいてキャッシュされたオブジェクトを無効にするコマンドが、 実行後にキャッシュ・エントリーを無効にします。 デフォルトでは、無効化はコマンド実行の前に発生します。
store-cookies サーブレット 引数として 1 つ以上の Cookie (クッキー) 名をとります。 この名前はキャッシュ・オブジェクトと一緒に保管され、サーブレット・キャッシュによって set-cookie ヘッダー 付きの応答時に復元されます。
ignore-get-post サーブレット true または false。デフォルトは false です。このプロパティーが true に設定されていると、requestType コンポーネントのサブエレメントが定義されていない限り、GET 要求および POST 要求の cache-id には要求タイプが追加されません。 デフォルトで、要求タイプは自動的に GET 要求および POST 要求の cache-id に追加されます。

cache-id

オブジェクトをキャッシュに入れるには、アプリケーション・サーバーが、 そのオブジェクトのさまざまな呼び出しについて固有の ID を生成する方法を認識していなければなりません。 これらの ID は、ユーザー作成のカスタム Java コードか、キャッシュ・エントリーのキャッシュ・ポリシーで定義済みである規則のいずれかから作成されます。 各キャッシュ・エントリーには複数のキャッシュ ID 規則があり、 これらは、以下のいずれかの状態になるまで、順番に実行されます。 有効なキャッシュ ID を生成するキャッシュ ID 生成規則がない場合、 オブジェクトはキャッシュに入れられません。
それぞれの cache-id エレメントは、オブジェクトをキャッシュに入れるための規則を定義します。 このエレメントは、サブエレメント component、timeout、inactivity、priority、property、idgenerator、 および metadatagenerator で構成されています。 次に cache-id エレメントの例を示します。
		<cache-id>
   component*| timeout? | inactivity? | priority?
| property* | idgenerator? | metadatagenerator?
</cache-id>

component サブエレメント

component サブエレメントは、キャッシュ ID の一部を生成するために使用します。 component サブエレメントは、属性 id、type、ignore-value と、エレメント index、method、field、required、value、および not-value から構成されます。

component サブエレメントには method および field エレメント、value エレメント、または not-value エレメントのいずれかを指定できます。 method および field エレメントはコマンドにのみ指定できます。 次の例には、component サブエレメントの属性を示しています。
<component id="isValid" type="method" ignore-value="true"><component>

timeout サブエレメント

timeout サブエレメントは、キャッシュ・エントリーに絶対存続時間 (TTL) 値を指定するために使用します。 以下に例を示します。
<timeout>value</timeout>

value は、キャッシュ・エントリーを保持する秒単位の時間の長さです。 メモリー内にある限り、キャッシュ・エントリーは無限に保持されます。 ディスクに保管されるキャッシュ・エントリーは、24 時間アクセスを受けなかった場合は除去されます。

inactivity サブエレメント

inactivity サブエレメントは、キャッシュ・エントリーがアクセスを最後に受けた時間に基づいて、 キャッシュ・エントリーの存続時間 (TTL) 値を指定するために使用します。 これは cache-id エレメントのサブエレメントです。
<inactivity>value</inactivity>
ここで、value は、最終のキャッシュ・ヒット後の、キャッシュ内でキャッシュ・エントリーを保持する秒単位の時間の長さです。

priority サブエレメント

priority サブエレメントは、キャッシュにキャッシュ・エントリーの優先順位を指定するために使用します。 キャッシュの最低使用頻度 (LRU) アルゴリズムは、 キャッシュがストレージ・スペースを使い尽くした場合に、優先順位の加重を使用して キャッシュから除去するエントリーを決定します。 以下に例を示します。
<priority>value</priority>

value は、1 から 255 の正整数です。

サンプル

以下のサンプルは、キャッシュ内のキャッシュ・エントリーを、最小で 35 秒間、最大で 180 秒間保持します。 キャッシュ・エントリーが各非活動期間 35 秒以内にアクセスされると 、非活動期間はもう 35 秒間拡張されます。 ただし、timeout エレメントも構成されているため、キャッシュ・エントリーは常に、 180 秒後には無効化されます。35 秒間以内にアクセスを受けなかったキャッシュ・エントリー は、キャッシュから除去されます。
		<cache-id>
	<component id="timeout" type="parameter">
				<required>true</required>
	</component>
	<timeout>180</timeout>
	<inactivity>35</inactivity>
	<priority>1</priority>
</cache-id>
以下のサンプルは、キャッシュ内のキャッシュ・エントリーを、最小で 600 秒間保持します。 キャッシュ・エントリーが 各 600 秒間の間にアクセスされると、非アクティブ期間はもう 600 秒間拡張されます。 キャッシュ・エントリーが 600 秒間以内にアクセスされない場合は、キャッシュ・エントリーはキャッシュから除去されます。
		<cache-id>
	<component id="timeout" type="parameter">
				<required>true</required>
	</component>
	<inactivity>600</inactivity>
	<priority>1</priority>
</cache-id>
以下の例では、非活動期間の値には意味がありません。タイムアウト期間 が非活動期間より短いからです。 キャッシュ・エントリーは、キャッシュ・エントリーのアクセス頻度に関わらず、常に 180 秒後には無効化されます。
		<cache-id>
	<component id="timeout" type="parameter">
				<required>true</required>
	</component>
	<timeout>180</timeout>
	<inactivity>600</inactivity>
	<priority>1</priority>
</cache-id>

property サブエレメント

property サブエレメントは、キャッシュ・エントリーの汎用プロパティーを指定するために使用します。 以下に例を示します。
<property name="key">value</property>

key は、定義されるプロパティーの名前であり、value は対応する値です。

以下に例を示します。
<property name="description">The Snoop Servlet</property>
プロパティー 有効なクラス 意味
sharing-policy/timeout/priority すべて 要求がこのキャッシュ ID と一致すると、 収容キャッシュ・エントリーの設定値をオーバーライドします。
EdgeCacheable Servlet 要求がこのキャッシュ ID と一致すると、 収容キャッシュ・エントリーの設定値をオーバーライドします。

idgenerator および metadatagenerator サブエレメント

idgenerator エレメントを使用して、キャッシュ ID の生成時にロードされるクラス名を指定します。 IdGenerator エレメントは、サーブレットに com.ibm.websphere.servlet.cache.IdGenerator インターフェースを実装するか、 Web サービス・クライアント・キャッシュに com.ibm.websphere.webservices.IdGenerator インターフェースを実装する必要があります。 以下に、idgenerator エレメントの例を示します。
<idgenerator> class name </idgenerator>
ここで、class name は使用するクラスの完全修飾名です。 このジェネレーター・クラスを共用ライブラリーに定義します。
キャッシュ ID エレメント内で metadatagenerator エレメントを使用して、メタデータ生成用にロードされるクラス名を指定します。 MetadataGenerator クラスは、サーブレットに com.ibm.websphere.servlet.cache.MetaDataGenerator インターフェースを実装するか、 Web サービス・クライアント・キャッシュに com.ibm.websphere.cache.webservices.MetaDataGenerator インターフェースを実装する必要があります。 MetadataGenerator クラスは、timeout、inactivity、外部キャッシング・プロパティーまたは依存関係などのプロパティーを定義します。 以下に metadatagenerator エレメントの例を示します。
<metadatagenerator> classname </metadatagenerator>
この例では、クラス名は使用するクラスの完全修飾名です。 このジェネレーター・クラスを共用ライブラリーに定義します。

dependency-id エレメント

dependency-id エレメントを使用して、 追加のキャッシュ ID を指定します。 この ID は、複数のキャッシュ・エントリーを同じグループ ID に関連付けます。

dependency-id エレメントの値は、依存関係 ID 基本ストリングと、そのコンポーネント・エレメントが戻す値を連結して生成されます。 必須のコンポーネントがヌル値を戻す場合、依存関係全体は生成も使用もされません。 動的キャッシュ API を使用して依存関係 ID を明示的に妥当性検査をしたり、 無効化エレメントを使用したりすることができます。 複数の依存関係 ID 規則が、1 つのキャッシュ・エントリー・エレメント内に存在する場合があります。 すべての依存関係規則は、個別に実行されます。

invalidation エレメント

キャッシュ・オブジェクトを無効にするには、 アプリケーション・サーバーが固有の無効化 ID を生成する必要があります。 カスタム Java コードを作成するか、各キャッシュ・エントリーのキャッシュ・ポリシーに定義されている規則に従って、無効化 ID を作成します。 以下にキャッシュ・ポリシーの無効化の例を示します。
<invalidation>component* | invalidationgenerator? </invalidation>

invalidationgenerator サブエレメント

invalidationgenerator エレメントは、Web サービス・クライアント・キャッシュのみと組み合わせて使用します。invalidationgenerator エレメントを使用して、無効化 ID を生成するためにロードするクラス名を指定します。invalidationGenerator クラスは com.ibm.websphere.cache.webservices.InvalidationGenerator インターフェースを実装する必要があります。 次の例は、invalidationgenerator エレメントの例です。
<invalidationgenerator>class name</invalidationgenerator>
この例では、class name には com.ibm.websphere.cache.webservices.InvalidationGenerator インターフェースを実装するクラスの完全修飾名を指定します。 このジェネレーター・クラスを共用ライブラリーに定義します。



関連タスク
cachespec.xml ファイルによるキャッシュ可能オブジェクトの構成
関連資料
例: 動的キャッシュ・サービスの構成
参照トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 10:13:28 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/rdyn_cachespec.html