cachespec.xml ファイル
キャッシュは、サーバーの始動時に cachespec.xml ファイルを構文解析し、 個々の cache-entry エレメントから構成パラメーターのセットを抽出します。 新規サーブレットやその他のキャッシュ可能オブジェクトが初期化されるごとに、 キャッシュは各 cache-entry エレメントを突き合わせて、そのオブジェクトの構成情報を検索します。
cache-entry エレメントは、ルート・キャッシュ・エレメント内か、cache-instance エレメント内にあります。 ルート・エレメント内にあるキャッシュ・エントリーはデフォルトのキャッシュ・インスタンスでキャッシュされます。 <cache-instance> エレメント内にあるキャッシュ・エントリーは、その特定のキャッシュ・インスタンス内でキャッシュされます。 キャッシュ可能オブジェクトごとに、クラス・エレメントが異なります。 name エレメントを使用して、キャッシュ・ポリシーが参照する特定のオブジェクトを定義できます。
ロケーション
cachespec.xml ファイルを デプロイメント・モジュールとともに配置します。 アセンブリー・ツールを使用して、キャッシュ可能なオブジェクトを定義します。 アプリケーションのアセンブルに関するトピックを参照してください。グローバル cachespec.xml ファイルは、アプリケーション・サ ーバーのプロパティー・ディレクトリーにも配置できます。 アプリケーション・サーバー・プロパティー・ディレクトリー内にグローバル cachespec.xml ファイルが含まれており、cachespec.xml ファイルがアプリケーションに含まれている場合、この 2 つの cachespec.xml ファイルのエントリーがマージされます。2 つのファイルで競合するエントリーがある場合、アプリケーションの 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
- skip-cache
- property
- cache-id
WebSphere® Application Server の現行バージョン では、1 つのサーブレットに複数のキャッシュ・ポリシーを定義できます。 例えば、web.xml ファイルで 1 つのサーブレットに複数のマッピングを定義する場合は、 それぞれのマッピングごとにキャッシュ・エントリーを作成できます。
- class
<class>command | servlet | webservice | JAXRPCClient | static | portlet </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> <class>portlet</class>
- name
<name>name</name>
名前エレメントの以下のガイドラインを使用して、 キャッシュ可能オブジェクトを指定します。- コマンドの場合、この必須エレメントには、構成済みオブジェクトのパッケージ名 (あれば)、およびクラス名 (末尾の .¥class を含む) を組み込まなければなりません。重要: cachespec.xml ファイルでコマンド・キャッシュを指定しており、アプリケーションが稼働しているアプリケーション・サーバーに対してサーブレットのキャッシュが使用可能になっていない場合は、エラーが発生します。この場合でもアプリケーション・サーバーはキャッシュ・インスタンスを取得しようとします。したがって、サーブレットのキャッシュを使用可能にすると、エラーは発生しません。
- サーブレットおよび JSP ファイルの場合、WebSphere Application Server のプロパティー・ディレクトリーに cachespec.xml ファイルがある場合、 この必須エレメントには、キャッシュする JSP ファイルまたはサーブレットのフル URI を組み込む必要があります。サーブレットおよび JSP ファイルの場合、cachespec.xml ファイルが Web アプリケーションにある場合には、この必須エレメントは特定の Web アプリケーション・コンテキスト・ルートから相対にすることができます。
- Web サービスの場合、キャッシュする Web サービスに関連した Simple Object Access Protocol (SOAP) ルーターの URI (Universal Resource Identifier) を組み込みます。
- Web サービス・クライアント・キャッシュの場合、この名前は、キャッシュ可能な Web サービスのターゲット・エンドポイント、または、キャッシュ可能な Web サービスに関連付けられている SOAP ルーターの URI です。Web サービス記述言語 (WSDL) ファイル内で SOAP アドレスのロケーションを使用すると、Web サービス・クライアント・キャッシュの名前を定義できます。
- 静的ファイルの場合、cachespec.xml ファイルが WebSphere Application Server のプロパティー・ディレクトリーにある場合、この必須エレメントには、 キャッシュするファイルのフル URI を組み込む必要があります。 cachespecm.xml ファイルが Web アプリケーションにある場合には、この必須エレメントは特定の Web アプリケーション・コンテキスト・ルートから相対にすることができます。コンテキスト・ルートを持つ Web アプリケーションの場合、静的クラスを使用するファイルのキャッシュ・ポリシーは、プロパティー・ディレクトリー内ではなく、Web アプリケーション内で指定しなければなりません。
- ポートレットの場合、cachespec.xml ファイルが WebSphere Application Server のプロパティー・ディレクトリーにある場合、この必須エレメントには キャッシュするポートレットのフル・コンテキスト・パスおよび名前を組み込む必要があります。 cachespec.xml ファイルが Web アプリケーションにある場合、この必須エレメントは特定の Web アプリケーション・コンテキスト・ルートから相対的なポートレット名になります。
ヒント: 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>
- コマンドの場合、この必須エレメントには、構成済みオブジェクトのパッケージ名 (あれば)、およびクラス名 (末尾の .¥class を含む) を組み込まなければなりません。
- sharing-policy
<sharing-policy> not-shared | shared-push | shared-pull | shared-push-pull</sharing-policy>
分散キャッシュを持つクラスター内で作業する場合、これらの値で、このオブジェクトから作成されたエントリーの共有特性を決定します。 このエレメントが存在しない場合は、not-shared 値が使用されます。
単一サーバー環境では、not-shared だけが有効な値です。
z/OS® プラットフォーム上 で、DynacacheEnableUnmanagedServerReplication および DynacacheUnmanagedServerReplicationType Java 仮想マシン (JVM) カスタム・プロパティーを使用して、基本 アプリケーション・サーバーのサーバント間で複製を使用可能にすることができます。 複製を使用可能にする場合のデフォルト値は not-shared です。このプロパティーは、Edge フラグメント・キャッシング・プロパティーによる Edge Side Include プロセッサーへの分散に影響を及ぼしません。
詳しくは、『キャッシュ複製の構成』を参照してください。
表 1. sharing-policy 値. sharing-policy の値および説明。 値 説明 not-shared このオブジェクトに対するキャッシュ・エントリーは、 異なるアプリケーション・サーバー間では共有されません。 これらのエントリーには、シリアライズ不可データを含めることができます。 例えば、 キャッシュされたサーブレットは、 シリアライズ不可オブジェクトを要求属性の中に配置することができます (<class> タイプがこれをサポートしている場合)。 トラブルの回避 (Avoid trouble): アプリケーション・サーバーは常に無効化エントリーを複製します。 これらは共有ポリシーの影響を受けません。gotcha
shared-push このオブジェクトに対するキャッシュ・エントリーは、 他のアプリケーション・サーバーまたは連携している Java 仮想 マシン (JVM) 内の動的キャッシュに自動的に配布されます。 各キャッシュにおいて、エントリーが作成された時点でそのコピーが作成されます。 これらのエントリーには、シリアライズ不可データを保管できません。 shared-pull このオブジェクトに対するキャッシュ・エントリーは、 要求に応じて、複数のアプリケーション・サーバー間で共有されます。 アプリケーション・サーバーが、このオブジェクトのキャッシュの不在を認識した場合、 連携アプリケーション・サーバーに照会して、そのオブジェクトがあるかどうかを調べます。 このオブジェクトのキャッシュされたコピーがどのアプリケーション・サーバーにもない場合、 元のアプリケーション・サーバーは要求を実行してオブジェクトを生成します。 これらのエントリーには、シリアライズ不可データを保管できません。この共有モードはお勧めしません。 shared-push-pull このオブジェクトに対するキャッシュ・エントリーは、 要求に応じて、複数のアプリケーション・サーバー間で共有されます。 アプリケーション・サーバーは、キャッシュ・エントリーを生成すると、 作成したエントリーのキャッシュ ID をすべての連携アプリケーション・サーバーにブロードキャストします。 これにより個々のサーバーは、特定のキャッシュ ID に対するエントリーが存在しているかどうかを認識します。 このようにしてアプリケーション・サーバーは、このエントリーに対する特定の要求に対して、 エントリーを生成するか、どこかほかの場所から取得するかを判別します。 これらのエントリーには、シリアライズ不可データを保管できません。 以下の例では、共有ポリシーを示します。<sharing-policy>not-shared</sharing-policy>
- skip-cache
- 要求属性の名前をとります。つまり、要求コンテキスト内に存在する場合、
指定されたキャッシュ・インスタンスから応答を検索できないことになります。
このプロパティーは、実動システムでコンテンツをプレビューし、アプリケーションが期待通りに動作し、
実行されていることを検証する際に役に立ちます。
<cache> <skip-cache-attribute>att1</skip-cache-attribute> <!–Applies only to the base cache- -> ... <cache-instance name="instance1"> <skip-cache-attribute>att2</skip-cache-attribute> <!-Applies only to this instance- -> ... </cache-instance> </cache>
- property
<property name="key">value</property>
ここで、key はこのキャッシュ・エントリー・エレメント用の プロパティーの名前であり、value は対応する値です。
ユーザーは、構成されたサーブレットの記述などのキャッシュ可能オブジェクトにオプショナル・プロパティーを設定することができます。 クラスは、キャッシュ・エントリーの有効なプロパティーを決定します。 現時点では、以下のプロパティーが定義済みです。
表 2. プロパティー値. プロパティー値および有効なクラス。 プロパティー 有効なクラス 値 ApplicationName すべて 複数のアプリケーションが共通キャッシュ ID 名前空間を共有できるように、JavaEEName アプリケーション ID をオーバーライドします。 EdgeCacheable サーブレット true または false。デフォルトは false です。このプロパティーが true であれば、指定したサーブレットまたは JSP ファイルが Edge Side Include プロセッサーから外部要求されます。サーブレットまたは JSP ファイルがキャッシュ可能であるかどうかは、残りのキャッシュ指定によって決まります。 一般の EdgeCacheable キャッシュ・エントリーの許可コンポーネントは、PARAMETER、HEADER、COOKIE、および PATH_INFOSERVLET_PATH です。
ExternalCache サーブレットとポートレット 外部キャッシュ名を指定します。 外部キャッシュ名は、外部キャッシュ・グループ名と一致しなければなりません。 consume-subfragments サーブレット、Web サービス、またはポートレット true または false。デフォルトは false です。サーブレットがキャッシュされる場合は、このサーブレットの内容のみが格納され、 インクルードまたは転送される他のフラグメント のプレースホルダーが含まれます。サブフラグメント消費 (CSF) によって、子サーブレットが含まれる場合は内容の保存 を停止しないよう、キャッシュに通知します。親エントリー (CSF とマークされている) には、キャッシュ・エントリーのすべてのフラグメントのすべての内容が含まれるため、インクルードまたは転送は含まれないがエントリーのツリー全体の内容が含まれる、大きいキャッシュ・エントリーが作成されます。 Consume-subfragments により、アプリケーション・サーバーの処理のかなりの量が節約できますが、 通常、外部 HTTP 要求に、組み込まれたフラグメントのツリー全体の決定に必要なすべての情報が含まれる場合にのみ役立ちます。 <exclude> エレメントを使用して、キャッシュに対し、除外したフラグメントの使用を停止させ、 代わりに組み込みまたは転送用のプレースホルダーを作成します。 例えば、以下のようにして consume-subfragment から A.jsp を除外します。<property name="consume-sbufragments">true <exclude>/A.jsp<exclude> </property>
do-not-consume サーブレット、Web サービス、またはポートレット true または false。デフォルトは false です。フラグメントの親が true に設定された消費サブフラグメント・プロパテ ィーを持つとき、子フラグメント・コンテンツは、親のキャッシュ・エントリーに保存されます。 Do-not-consume (DNC) はキャッシュに、親キャッシュ・エントリー内のこ のフラグメントのコンテンツを保存するのを停止して、インクルードまたは フォワードの代わりにプレースホルダーを作成するようにと伝えます。 alternate_url サーブレット サーブレットまたは 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 サーブレットとポートレット on または off。デフォルトは On です。 このプロパティーは、引数として 1 つ以上の Cookie 名をとります。この名前はキャッシュ・オブジェクトと一緒に保存され、サーブレット・キャッシュによって set-cookie ヘッダー付きの応答時に復元されます。 以下のように、cache-entry の一部として cookie1 を除くすべての Cookie を保存します。<property name="store-cookies">true <exclude>cookie</exclude> </property>
以下のように、cache-entry の一部として cookie1 のみを保存します。<property name="store-cookies">false <exclude><cookie1</exclude> </property>
ignore-get-post サーブレットとポートレット true または false。デフォルトは false です。このプロパティーが true に設定されていると、requestType コンポーネントのサブエレメントが定義されていない限り、GET 要求および POST 要求の cache-id には要求タイプが追加されません。 デフォルトで、要求タイプは自動的に GET 要求および POST 要求の cache-id に追加されます。 ignore-char-encoding サーブレットとポートレット true または false。デフォルト値は false です。このプロパティーが true に設定されていると、UTF-8 文字エンコードはキャッシュ ID に付加されません。UTF-8 文字エンコードをキャッシュ ID に付加すると、フラグメントのコピーが複数生成され、キャッシュのサイズが必要以上に増加します。 do-not-cache サーブレットとポートレット 親がキャッシュすることも使用することもないフラグメントを定義します。
または<cache-entry> ... <property name="do-not-cache">true</property>
<cache-id> <property name="do-not-cache">true</property> </cache-id> </cache-entry>
- cache-id
- オブジェクトをキャッシュに入れるには、アプリケーション・サーバーが、
そのオブジェクトのさまざまな呼び出しについて固有の ID を生成する方法を認識していなければなりません。
これらの ID は、ユーザー作成のカスタム Java コードか、キャッシュ・エントリーの
キャッシュ・ポリシーで定義済みである規則のいずれかから作成されます。
各キャッシュ・エントリーには複数のキャッシュ 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 から構成されます。
- id 属性を使用してコンポーネントを識別します。
- type 属性を使用してコンポーネントのタイプを識別します。次の表は、タイプの値のリストです。
トラブルの回避 (Avoid trouble): parameter component サブエレメントが cachespec.xml ファイル内に指定されている場合、Web コンテナーは要求オブジェクトから取得したエンコード設定に基づいて文字エンコードを設定します。文字エンコードは設定後には変更できないため、それ以降にサーブレットが setCharacterEncoding メソッドを呼び出しても、 メソッドの効果は何もありません。gotcha
表 3. タイプの値. タイプの有効なクラスおよび意味。 タイプ 有効なクラス 意味 method コマンド 指示されたメソッドをコマンドまたはオブジェクトで呼び出します field コマンド 指定されたフィールドをコマンドまたはオブジェクトで検索します parameter サーブレットとポートレット 指定されたパラメーター値を要求オブジェクトから検索します parameter-list サーブレットとポートレット 指定されたパラメーターの値のリストを検索します トラブルの回避 (Avoid trouble): この名前を持つすべてのパラメーターの値が キャッシュに取り込まれ、それらが取り込まれた順にキャッシュ ID が作成されますgotcha
session サーブレットとポートレット HTTP セッションから名前値を検索します。 cookie サーブレット 指定された Cookie 値を検索します attribute サーブレットとポートレット 指定された要求属性を検索します header サーブレット、Web サービス、およびポートレット 指定された要求ヘッダーを検索します pathInfo サーブレット pathInfo エレメントを要求から検索します servletpath サーブレット サーブレット・パスを検索します locale サーブレットとポートレット 要求ロケールを検索します 重要: ロケール・コンポーネントは、RRD を使用している場合は、edgecacheable エントリーにのみ許可できます。ロケール・コンポーネントは、その他のすべての ESI バージョンに対しては無効です。requestType サーブレットとポートレット 要求から HTTP 要求数メソッドを検索します。 重要: requestType コンポーネントは、RRD を使用している場合は、edgecacheable エントリーにのみ許可できます。requestType コンポーネントは、その他のすべての ESI バージョンに対しては無効です。tiles_attribute サーブレットとポートレット タイルから属性の値を検索します。 SOAPEnvelope Web サービスおよび Web サービス・クライアント・キャッシュ Web サービス要求から SOAPEnvelope エレメントを検索します。Literal が受け取った SOAPEnvelope エレメントを使用するのに対して、Hash の ID 属性は SOAPEnvelope エレメントの Hash を使用します。 SOAPAction Web サービス Web サービス要求の SOAPAction ヘッダー (使用可能になっている場合) を検索します。 serviceOperation Web サービス Web サービス要求に対するサービス・オペレーションを検索します serviceOperationParameter Web サービス 指定されたパラメーターを Web サービス要求から検索します operation Web サービス・クライアント・キャッシュ Web サービス記述言語 (WSDL) ファイル内の操作タイプを示します。 id 属性は無視され、値はオペレーションまたはメソッドの名前になります。 オペレーションの名前空間が指定されている場合は、この値を namespaceOfOperation:nameOfOperation とフォーマット設定します。 part Web サービス・クライアント・キャッシュ WSDL ファイル内、または要求パラメーターの入力メッセージ・パーツを示します。 id 属性はパーツまたはパラメーター名で、値はパーツまたはパラメーターの値です。 SOAPHeaderEntry Web サービス・クライアント・キャッシュ Web サービス要求の Simple Object Access Protocol (SOAP) ヘッダー内の特定の情報を検索します。id 属性はエントリーの名前を指定します。 また、SOAP 要求内の SOAP ヘッダーのエントリーには actor 属性 (com.ibm.websphere.cache など) が含まれている必要があります。 以下に例を示します。 <soapenv:Header> <getQuote soapenv:actor="com.ibm.websphere.cache">IBM</getQuote> </soapenv:Header>
portletSession ポートレット ポートレット・セッションから名前値を検索します。 portletWindowId ポートレット ポートレット要求オブジェクトからポートレット・ウィンドウ ID を検索します portletMode ポートレット ポートレット要求オブジェクトからポートレット・モードを検索します。 portletWindowsState ポートレット ポートレット要求オブジェクトからポートレット・ウィンドウ状態を検索します。 sessionID サーブレットとポートレット HTTP セッション ID を検索します。 - ignore-value 属性を使用して、このコンポーネントによって戻された値をキャッシュ ID の 構成に使用するかどうかを指定します。 これは、デフォルト値が false のオプショナル属性です。 値が true の場合、キャッシュ ID を作成するときにコンポーネントの ID だけが使用されます。 つまり、依存関係または無効化 ID を作成するときに、出力は使用されません。
- method エレメントを使用して、戻されたオブジェクトで void メソッドを呼び出します。メソッドおよびフィールド・オブジェクトを、さまざまな組み合わせで無限にネストできます。
メソッドは、パブリックでなければならず、エッジ・キャッシュ可能コンポーネントに対しては無効になります。
以下に例を示します。
<component id="getUser" type="method"><method>getUserInfo <method>getName</method></method></component>
このメソッドは、 getUser().getUserInfo().getName() と同等です。
オブジェクトを戻すことができる component 型属性 method や field では、 戻されたオブジェクトがコレクションまたはアレイである場合、ID が、そのコレクションまたはアレイ内の エレメントのコンマ区切りのリストと一緒に作成されます。 例えば、要求属性ユーザーがアレイ [a, b] 戻す場合、キャッシュ・エントリーは以下の例のように定義されます。
キャッシュ ID はストリング users: a,b を含みます。 依存関係 ID は dep: a,b です。<cache-entry> <class>servlet</class> <name>xxx.jsp</name> <cache-id> . . <component id="users" type="attribute"> <required>true</required> </component> . . </cache-id> <dependency-id>dep <component id="users" type="attribute"> <required>true</required> </component> </dependency-id> </cache-entry>
component 型で multipleIDs 属性を使用して、 コレクションまたはアレイ内の項目に基づいて複数の依存関係 ID (または無効化 ID) を指定および生成します。 以下に例を示します。
キャッシュ・ポリシーは以下の依存関係 ID を生成します。<cache-entry> <class>servlet</class> <name>xxx.jsp</name> <cache-id> . . <component id="users" type="attribute"> <required>true</required> </component> . . </cache-id> <dependency-id>dep <component id="users" type="attribute" multipleIDs="true"> <required>true</required> </component> </dependency-id> </cache-entry>
- dep:a,b
- dep:a
- dep:b
前の component 型で index エレメントを使用して、 コレクションまたはアレイ内の指定された索引位置で、エレメントの値のみを、作成される ID に追加します。
前述のキャッシュ・ポリシーは、キャッシュ ID users: b 内で使用する次のコンポーネントを生成します。 <method> エレメントを使用して、戻されたオブジェクトで void メソッドを呼び出します。<cache-entry> <class>servlet</class> <name>xxx.jsp</name> <cache-id> . . <component id="users" type="attribute"> <required>true</required> <index>1</index> </component> . . </cache-id> <dependency-id>dep <component id="users" type="attribute" multipleIDs="true"> <required>true</required> </component> </dependency-id> </cache-entry>
- field エレメントを使用して、戻されたオブジェクト内のフィールドにアクセスします。
メソッドおよびフィールド・オブジェクトを、さまざまな組み合わせで無限にネストできます。
フィールドはパブリックでなければなりません。
このフィールドは、エッジ・キャッシュ可能コンポーネントに対しては無効です。以下に例を示します。
<component id="getUser" type="method"><method>getUserInfo <field>name</field></method></component>
このメソッドは getUser().getUserInfo().name メソッドと同等です。
- required エレメントを使用して、このコンポーネントが、
有効なキャッシュを表す非ヌル値をこのキャッシュ ID に戻さなければならないかどうかを指定します。
true に設定されている場合、このコンポーネントは、
有効なキャッシュ ID を表す非ヌル値をこのキャッシュ ID に戻さなければなりません。
デフォルトの false に設定されている場合、キャッシュ ID の構成に非ヌル値が使用され、
ヌル値は、ID の構成にこのコンポーネントがまったく使用されないことを意味します。
以下に例を示します。
<required>true</required>
- value エレメントを使用して、キャッシュ ID の構成でこのコンポーネントを使用するためには
一致させる必要のある値を指定します。
以下に例を示します。
<component id="getUser" type="method"><value>blue</value> <value>red</value> </component>
- not-value エレメントを使用して、キャッシュ ID の構成にこのコンポーネントを使用するためには
一致させてはならない値を指定します。
このメソッドは value エレメントに類似していますが、代わりにキャッシングからの定義済みの値を記述します。
複数の無効な値が存在する場合は、複数の not-value エレメントを使用できます。
以下に例を示します。
<component id="getUser" type="method"> <required>true</required> <not-value>blue</not-value> <not-value>red</not-value></component>
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 エレメントのサブエレメントです。
ここで、value は、最終のキャッシュ・ヒット後の、キャッシュ内でキャッシュ・エントリーを保持する秒単位の時間の長さです。<inactivity>value</inactivity>
- priority サブエレメント
- priority サブエレメントは、キャッシュにキャッシュ・エントリーの優先順位を指定するために使用します。
キャッシュの最低使用頻度 (LRU) アルゴリズムは、
キャッシュがストレージ・スペースを使い尽くした場合に、優先順位の加重を使用して
キャッシュから除去するエントリーを決定します。
以下に例を示します。
<priority>value</priority>
ここで、value は、1 から 16 の正の整数です。
- サンプル
- 以下のサンプルは、キャッシュ内のキャッシュ・エントリーを、最小で 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>
表 4. プロパティー・サブエレメントの値. プロパティーの有効なクラスと意味。 プロパティー 有効なクラス 意味 sharing-policy/timeout/priority すべて 要求がこのキャッシュ ID と一致すると、 収容キャッシュ・エントリーの設定値をオーバーライドします。 EdgeCacheable サーブレット 要求がこのキャッシュ ID と一致すると、 収容キャッシュ・エントリーの設定値をオーバーライドします。
idgenerator および metadatagenerator サブエレメント
<idgenerator> class name </idgenerator>
ここで、class name は使用するクラスの完全修飾名です。
この生成プログラム・クラスを共有ライブラリーに定義します。<metadatagenerator> classname </metadatagenerator>
この例では、クラス名は使用するクラスの完全修飾名です。
この生成プログラム・クラスを共有ライブラリーに定義します。dependency-id エレメント
dependency-id エレメントを使用して、 追加のキャッシュ ID を指定します。 この ID は、複数のキャッシュ・エントリーを同じグループ ID に関連付けます。
dependency-id エレメントの値は、依存関係 ID 基本ストリングと、そのコンポーネント・エレメントが戻す値を連結して生成されます。 必須のコンポーネントがヌル値を戻す場合、依存関係全体は生成も使用もされません。 動的キャッシュ API を使用して依存関係 ID を明示的に妥当性検査をしたり、 無効化エレメントを使用したりすることができます。 複数の依存関係 ID 規則が、1 つのキャッシュ・エントリー・エレメント内に存在する場合があります。 すべての依存関係規則は、個別に実行されます。
invalidation エレメント
<invalidation>component* | invalidationgenerator? </invalidation>
invalidationgenerator サブエレメント
<invalidationgenerator>class name</invalidationgenerator>
この例では、class name には com.ibm.websphere.cache.webservices.InvalidationGenerator インターフェースを実装するクラスの完全修飾名を指定します。
この生成プログラム・クラスを共有ライブラリーに定義します。cachespec.xml ファイルの例
<?xml version="1.0"?> <!DOCTYPE cache SYSTEM "cachespec.dtd"> <cache> <cache-entry> <class>servlet</class> <name>/MyDefinedServlet</name> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/MyAnnotatedServlet</name> <cache-id> <timeout>3600</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/MyProgrammaticServlet</name> <cache-id> <timeout>3600</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/MyProgrammaticServlet2</name> <cache-id> <timeout>3600</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/MyProgrammaticServlet3</name> <cache-id> <timeout>3600</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/StartAsyncDispatchCompleteAltPath</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>testDoNotConsume</value> </component> <property name="do-not-consume">true</property> <timeout>5000</timeout> <priority>2</priority> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>testCacheChildONLY</value> </component> <property name="do-not-consume">true</property> <timeout>5000</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/StartAsyncDispatchComplete</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>testDoNotConsume</value> </component> <property name="consume-subfragments">false</property> <timeout>5000</timeout> <priority>2</priority> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>testConsumeSubFragments</value> </component> <property name="consume-subfragments">true</property> <timeout>5000</timeout> <priority>2</priority> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>testTimeout</value> </component> <property name="do-not-consume">true</property> <timeout>5000</timeout> <priority>2</priority> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>testError</value> </component> <property name="do-not-consume">true</property> <timeout>5000</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/DiscardParent.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/AttrA1.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/AttrA2.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/AttrA3.jsp</name> <property name="consume-subfragments">true</property> <property name="save-attributes"> false <exclude>saveThisAttr</exclude> </property> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/AttrC3.jsp</name> <property name="do-not-cache">true</property> <property name="save-attributes">false</property> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/CacheTest.jsp</name> <cache-id> <component id="output" type="attribute"> <required>true</required> </component> <timeout>180</timeout> </cache-id> <dependency-id> response <component id="output" type="attribute"> <required>true</required> </component> </dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>Include1.jsp</name> <cache-id> <component id="outputForInclude1" type="attribute"> <required>true</required> </component> <timeout>120</timeout> <priority>2</priority> </cache-id> <dependency-id> response <component id="output" type="attribute"> <required>true</required> </component> </dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESIParent.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="parm1" type="parameter" /> <timeout>180</timeout> <priority>2</priority> </cache-id> <dependency-id> dep1 <component id="parm1" type="parameter" /> </dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESIChild.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="parm2" type="parameter" /> <timeout>180</timeout> <priority>2</priority> </cache-id> <dependency-id> dep4 <component id="parm2" type="parameter" /> </dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESI1Cached.jsp</name> <cache-id> <component id="param2" type="parameter"> <required>true</required> </component> <timeout>180</timeout> <priority>2</priority> </cache-id> <dependency-id>ESI1</dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESI1Edgeable.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="param2" type="parameter"> <required>true</required> </component> <timeout>180</timeout> <priority>2</priority> </cache-id> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>180</timeout> <priority>2</priority> </cache-id> <dependency-id>ESI1</dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESI2Cached.jsp</name> <cache-id> <timeout>240</timeout> <priority>2</priority> </cache-id> <dependency-id>ESI2</dependency-id> </cache-entry> <cache-entry> <property name="EdgeCacheable">true</property> <name>ESI2Edgeable.jsp</name> <class>servlet</class> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>180</timeout> <priority>2</priority> </cache-id> <cache-id> <timeout>180</timeout> <priority>2</priority> </cache-id> <dependency-id>ESI2</dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESI3Cached.jsp</name> <cache-id> <timeout>60</timeout> <priority>2</priority> </cache-id> <dependency-id>ESI3</dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESI3Edgeable.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>60</timeout> <priority>2</priority> </cache-id> <cache-id> <timeout>60</timeout> <priority>2</priority> </cache-id> <dependency-id>ESI3</dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESI4Edgeable.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>60</timeout> <priority>2</priority> </cache-id> <cache-id> <timeout>60</timeout> <priority>2</priority> </cache-id> <dependency-id>ESI4</dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESI5Edgeable.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>60</timeout> <priority>2</priority> </cache-id> <cache-id> <timeout>60</timeout> <priority>2</priority> </cache-id> <dependency-id>ESI5</dependency-id> </cache-entry> <!--Test ESI w/ wildcard character--> <cache-entry> <class>servlet</class> <name>ESI6Edgeable.jsp</name> <cache-id> <component id="*" type="parameter"> <required>false</required> </component> <timeout>180</timeout> <property name="EdgeCacheable">true</property> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESI7Edgeable.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>60</timeout> <priority>2</priority> </cache-id> <cache-id> <timeout>60</timeout> <priority>2</priority> </cache-id> <dependency-id>ESI7</dependency-id> </cache-entry> <cache-entry> <class>webservice</class> <name>/services/CounterService1</name> <sharing-policy>not-shared</sharing-policy> <cache-id> <component id="Request-Hash" type="header"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> <property name="description"> This is SOAP Servlet. </property> </cache-id> <cache-id> <component id="" type="SOAPAction"> <value>urn:lookup</value> </component> <component id="Hash" type="SOAPEnvelope" /> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="" type="serviceOperation"> <value>urn:counterservice1:counter1</value> </component> <component id="Hash" type="SOAPEnvelope" /> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="" type="serviceOperation"> <value>urn:counterservice1:counter1</value> </component> <component id="in" type="serviceOperationParameter"> <value>xxx</value> </component> <component id="Hash" type="SOAPEnvelope" /> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="" type="serviceOperation"> <not-value>urn:counterservice1:counter1</not-value> </component> <component id="in" type="serviceOperationParameter"> <not-value>xxx</not-value> </component> <component id="Hash" type="SOAPEnvelope" /> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="" type="SOAPAction"> <value>urn:lookup</value> </component> <component id="Literal" type="SOAPEnvelope" /> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="" type="SOAPAction"> <value>urn:lookup</value> </component> <component id="Hash" type="SOAPEnvelope" /> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="" type="serviceOperation"> <value>urn:counterservice1:counter1</value> <value>urn:counterservice2:counter2</value> </component> <component id="Hash" type="SOAPEnvelope" /> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="" type="serviceOperation"> <value>urn:counterservice1:counter1</value> </component> <component id="Hash" type="SOAPEnvelope" /> <timeout>0</timeout> <priority>1</priority> </cache-id> <dependency-id>depId</dependency-id> <invalidation> depId <component id="" type="serviceOperation" ignore-value="true"> <value>urn:counterservice1:reset1</value> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>TimeoutPos.jsp</name> <cache-id> <timeout>10</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>com.ibm.ws.cache.servlet.pathinfo1.class</name> <cache-id> <component id="" type="pathinfo"> <required>true</required> </component> <component id="genPathInfo" type="parameter"> <required>false</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>com.ibm.ws.cache.servlet.pathinfo2.class</name> <cache-id> <component id="" type="pathinfo"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/pathinfo1/xxxx</name> <cache-id> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/pathinfo1/yyyy</name> <cache-id> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <sharing-policy>shared-pull</sharing-policy> <name>com.ibm.ws.cache.servlet.reqparmtest.class</name> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="timeout" type="parameter"> <required>true</required> </component> <timeout>15</timeout> <priority>1</priority> </cache-id> <dependency-id> reqparm <component id="arg1" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> reqparm <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <sharing-policy>shared-push</sharing-policy> <name> com.ibm.ws.cache.servlet.reqparmtest_sharePush.class </name> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="timeout" type="parameter"> <required>true</required> </component> <timeout>15</timeout> <priority>1</priority> </cache-id> <dependency-id> reqparm <component id="arg1" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> reqparm <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>com.ibm.ws.cache.servlet.reqattrtest.class</name> <cache-id> <component id="arg" type="attribute"> <required>false</required> </component> <component id="IAmRequired" type="attribute" ignore-value="true"> <required>true</required> </component> <component id="int" type="attribute"> <method>intValue</method> <required>false</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/STMTestServlet</name> <sharing-policy>shared-push</sharing-policy> <cache-id> <component id="parm" type="parameter"> <required>false</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-instance name="services/cache/servletInstance_1"> <cache-entry> <class>servlet</class> <name>/STMTestServlet_shareNone</name> <sharing-policy>not-shared</sharing-policy> <cache-id> <component id="parm" type="parameter"> <required>false</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/STMTestServlet_shareDefault</name> <cache-id> <component id="parm" type="parameter"> <required>false</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/STMTestServlet_sharePush</name> <sharing-policy>shared-push</sharing-policy> <cache-id> <component id="parm" type="parameter"> <required>false</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/STMTestServlet_sharePull</name> <sharing-policy>shared-pull</sharing-policy> <cache-id> <component id="parm" type="parameter"> <required>false</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/STMTestServlet_sharePushPull</name> <sharing-policy>shared-push-pull</sharing-policy> <cache-id> <component id="parm" type="parameter"> <required>false</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>SITimeStamp</name> <cache-id> <component id="parm" type="parameter" /> <timeout>180</timeout> <priority>2</priority> </cache-id> </cache-entry> </cache-instance> <cache-entry> <class>servlet</class> <name>/CloseAndFlush</name> <cache-id> <component id="action" type="parameter"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-instance name="services/cache/servletInstance_1"> <cache-entry> <class>servlet</class> <name>/TimeStamp</name> <sharing-policy>not-shared</sharing-policy> <cache-id> <component id="timeout" type="parameter"> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="inactivity0" type="parameter"> <required>true</required> </component> <timeout>30</timeout> <inactivity>0</inactivity> <priority>1</priority> </cache-id> <cache-id> <component id="inactivity1" type="parameter"> <required>true</required> </component> <timeout>60</timeout> <inactivity>30</inactivity> <priority>1</priority> </cache-id> <cache-id> <component id="inactivity2" type="parameter"> <required>true</required> </component> <inactivity>30</inactivity> <priority>1</priority> </cache-id> <cache-id> <component id="inactivity3" type="parameter"> <required>true</required> </component> <timeout>30</timeout> <inactivity>60</inactivity> <priority>1</priority> </cache-id> <cache-id> <property name="ignore-get-post">false</property> <component id="ignore" type="parameter"> <value>false</value> </component> </cache-id> <cache-id> <property name="ignore-get-post">true</property> <component id="ignore" type="parameter"> <value>true</value> </component> </cache-id> <dependency-id> timestamp <component id="arg1" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> timestamp <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> </cache-instance> <cache-entry> <class>servlet</class> <name>/TimeStamp1</name> <property name="persist-to-disk">false</property> <sharing-policy>not-shared</sharing-policy> <cache-id> <component id="timeout" type="parameter"> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> <dependency-id> timestamp <component id="arg1" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> timestamp <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/TimeStamp2</name> <property name="persist-to-disk">false</property> <sharing-policy>not-shared</sharing-policy> <cache-id> <component id="timeout" type="parameter"> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> <dependency-id> timestamp2 <component id="arg1" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> timestamp2 <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-instance name="services/cache/servletInstance_1"> <cache-entry> <class>command</class> <name>com.ibm.ws.cache.command.MyQuoteCommand.class</name> <cache-id> <timeout>0</timeout> <priority>3</priority> <component id="getTicker" type="method" /> </cache-id> <dependency-id>MyQuoteTicker</dependency-id> </cache-entry> </cache-instance> <cache-entry> <class>command</class> <name>com.ibm.ws.cache.command.QuoteCommand.class</name> <cache-id> <timeout>180</timeout> <priority>3</priority> <component id="getTicker" type="method" /> </cache-id> <dependency-id> ticker <component id="getTicker" type="method" /> </dependency-id> </cache-entry> <cache-entry> <class>command</class> <name>com.ibm.ws.cache.command.QuoteCommandComplex.class</name> <cache-id> <timeout>240</timeout> <priority>3</priority> <component id="getComplex" type="method"> <method>getTicker</method> </component> </cache-id> <dependency-id> ticker <component id="getComplex" type="method"> <field>ticker</field> </component> </dependency-id> </cache-entry> <cache-entry> <class>command</class> <name>com.ibm.ws.cache.command.QuoteCommandIdGen</name> <cache-id> <timeout>120</timeout> <priority>3</priority> <idgenerator> com.ibm.ws.cache.command.QuoteIdGenerator </idgenerator> </cache-id> </cache-entry> <cache-entry> <class>command</class> <name>com.ibm.ws.cache.command.NoOutputPropCommand</name> <cache-id> <timeout>180</timeout> <priority>3</priority> <component id="getTicker" type="method" /> </cache-id> <dependency-id> ticker <component id="getTicker" type="method" /> </dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/bufferwritercached</name> <cache-id> <timeout>0</timeout> <priority>3</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/bufferstreamcached</name> <cache-id> <timeout>0</timeout> <priority>3</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/BasicServlet</name> <cache-id> <component id="testCookie" type="cookie"> <required>true</required> </component> <timeout>30</timeout> </cache-id> <cache-id> <component id="action" type="parameter" /> <component id="" type="locale" /> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>command</class> <name>com.ibm.ws.cache.command.WatchListCommand</name> <cache-id> <timeout>360</timeout> <priority>4</priority> <component id="userGroup" type="field" /> <component id="userNumber" type="field" /> </cache-id> <dependency-id> USER <component id="userGroup" type="field" /> <component id="userNumber" type="field" /> </dependency-id> </cache-entry> <cache-entry> <class>command</class> <name>com.ibm.ws.cache.command.WatchListCommandMixed</name> <cache-id> <timeout>360</timeout> <priority>4</priority> <component id="userGroup" type="field" /> <component id="getUserNumber" type="method" /> </cache-id> <dependency-id> USER <component id="userGroup" type="field" /> <component id="getUserNumber" type="method" /> </dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>com.ibm.ws.cache.command.CommandTestServlet.class</name> <invalidation> USER <component id="action" type="parameter" ignore-value="true"> <value>invalidate</value> </component> <component id="group" type="parameter" /> <component id="user" type="parameter" /> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>consumeParent.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>0</timeout> <priority>4</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>consumeParent2.jsp</name> <cache-id> <timeout>0</timeout> <priority>4</priority> <property name="consume-subfragments">true</property> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>consumeParentForward.jsp</name> <cache-id> <timeout>0</timeout> <priority>4</priority> <property name="consume-subfragments">true</property> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/esiForwardInclude.jsp</name> <cache-id> <property name="EdgeCacheable">true</property> <timeout>600</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/esiParentConsume.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <property name="EdgeCacheable">true</property> <timeout>600</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/alturlcontroller1</name> <property name="EdgeCacheable">true</property> <cache-id> <timeout>600</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/AltUrlTest2.jsp</name> <property name="EdgeCacheable">true</property> <property name="alternate_url">/alturlcontroller2</property> <cache-id> <timeout>600</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/AltUrlTest3.jsp</name> <property name="EdgeCacheable">true</property> <property name="alternate_url">/alturlcontroller3</property> <cache-id> <timeout>600</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/AltUrlTest4.jsp</name> <property name="EdgeCacheable">true</property> <property name="alternate_url">/alturlcontroller4</property> <cache-id> <timeout>600</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/AltUrlTest5.jsp</name> <cache-id> <timeout>600</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>com.ibm.ws.cache.servlet.reqparmlisttest.class</name> <cache-id> <component id="parm" type="parameter-list"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/SaveAttributesParent.jsp</name> <sharing-policy>not-shared</sharing-policy> <property name="consume-subfragments">false</property> <property name="save-attributes">false</property> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> <dependency-id> timestamp <component id="arg1" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> timestamp <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/ReqAttA.jsp</name> <cache-id> <component id="ReqAttr" type="attribute"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/ServletPathTest</name> <sharing-policy>not-shared</sharing-policy> <cache-id> <component id="" type="servletpath"> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/ESICookie.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/ESIQueryStringParent.jsp</name> <cache-id> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/ESIQueryStringChild.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="scenario" type="parameter"> <required>true</required> </component> <component id="parm1" type="parameter"> <required>true</required> </component> <component id="testCookie" type="cookie"> <required>true</required> </component> <timeout>180</timeout> <priority>1</priority> </cache-id> <cache-id> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>com.ibm.ws.cache.servlet.IncludeTimeStamp.class</name> <sharing-policy>not-shared</sharing-policy> <cache-id> <component id="type" type="attribute"> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>JAXRPCClient</class> <name> http://localhost:9080/dynacachetests/services/Counter </name> <cache-id> <component id="http://schemas.xmlsoap.org/soap/envelope/:Counter" type="SOAPHeaderEntry" /> <timeout>0</timeout> </cache-id> <cache-id> <component id="http://schemas.xmlsoap.org/soap/envelope/:urn:headerNS:Counter" type="SOAPHeaderEntry" /> <timeout>0</timeout> </cache-id> <cache-id> <component id="" type="operation"> <value> http://counter.webservices.cache.ws.ibm.com:counter1 </value> </component> <component id="in" type="part"></component> <timeout>0</timeout> </cache-id> <cache-id> <component id="Hash" type="SOAPEnvelope" /> <timeout>0</timeout> </cache-id> <dependency-id> Counter_in <component id="http://schemas.xmlsoap.org/soap/envelope/:urn:headerNS:Counter" type="SOAPHeaderEntry"> <required>true</required> </component> </dependency-id> <invalidation> Counter_in <component id="http://schemas.xmlsoap.org/soap/envelope/:urn:headerNS:Reset" type="SOAPHeaderEntry"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>JAXRPCClient</class> <name> http://localhost:9080/dynacachetests/services/AddressBookBean </name> <cache-id> <component id="" type="operation"> <value> http://addr.webservices.cache.ws.ibm.com:getAddressFromName </value> </component> <component id="name" type="part"></component> <component id="country" type="part"></component> <timeout>0</timeout> </cache-id> <dependency-id> AddressBook <component id="" type="operation" ignore-value="true"> <value> http://addr.webservices.cache.ws.ibm.com:getAddressFromName </value> <required>true</required> </component> <component id="name" type="part"> <required>true</required> </component> </dependency-id> <invalidation> AddressBook <component id="" type="operation" ignore-value="true"> <value> http://addr.webservices.cache.ws.ibm.com:invalidate </value> <required>true</required> </component> <component id="name" type="part"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>JAXRPCClient</class> <name> http://localhost:9080/dynacachetests/services/StockQuote </name> <sharing-policy>shared-push</sharing-policy> <cache-id> <idgenerator> com.ibm.ws.cache.webservices.stock.QuoteIdGenerator </idgenerator> <metadatagenerator> com.ibm.ws.cache.webservices.stock.QuoteMetaDataGenerator </metadatagenerator> <priority>5</priority> </cache-id> <invalidation> http://localhost:9080/dynacachetests/services/StockQuote <invalidationgenerator> com.ibm.ws.cache.webservices.stock.QuoteInvalidationGenerator </invalidationgenerator> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/basic.do</name> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> <dependency-id> struts <component id="arg1" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> struts <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/forward.do</name> <cache-id> <property name="EdgeCacheable">true</property> <component id="type" type="parameter"> <required>true</required> <value>esiParentConsume</value> </component> <component id="JSESSIONID" type="cookie" /> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/strutsTimeStamp.jsp</name> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/STTimeStamp</name> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/child1.do</name> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/stConsumeFragment.do</name> <cache-id> <component id="whoami" type="parameter"> <required>true</required> <value>grandparent</value> </component> <property name="consume-subfragments">true</property> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/stConsumeParent.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/stDNCFragment.do</name> <property name="consume-subfragments">true</property> <cache-id> <component id="whoami" type="parameter"> <required>true</required> <value>grandparent</value> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> <dependency-id> DNC <component id="whoami" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> DNC <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/stDNCGrandChild.jsp</name> <property name="do-not-consume">true</property> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/stSaveAttrParent.do</name> <property name="save-attributes">false</property> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/stDisplayInfo.jsp</name> <cache-id> <component id="lbean" type="session"> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/tileParent.jsp</name> <cache-id> <component id="type" type="parameter"> <required>true</required> <value>strut</value> </component> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/tileChild.jsp</name> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/tileChildServlet</name> <cache-id> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/tileEsiParent.jsp</name> <cache-id> <component id="type" type="parameter"> <value>edgeable</value> </component> <property name="EdgeCacheable">true</property> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/tileEsiChild.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="arg1" type="parameter"> <required>true></required> </component> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/tileGrandParent.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/tileDNCGrandParent.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/tileCSFChild1.jsp</name> <property name="do-not-consume">true</property> <cache-id> <component id="arg1" type="parameter"> <value>DNC</value> </component> <timeout>180</timeout> <priority>1</priority> </cache-id> <dependency-id> DNC <component id="arg1" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> DNC <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/tileSaveAttrParent.jsp</name> <property name="save-attributes">false</property> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/header.jsp</name> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/body.jsp</name> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/footer.jsp</name> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/testSTDefinition.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/SavAttrParent/TrueExclude</name> <property name="save-attributes"> true <exclude>att1</exclude> </property> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/SavAttrParent/FalseExclude</name> <property name="save-attributes"> false <exclude>att1</exclude> </property> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/DCP</name> <cache-id> <timeout>180</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/DCPParent</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>180</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/DCPGrandParent</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>180</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-instance name="services/cache/servletInstance_2"> <cache-entry> <class>servlet</class> <name>/TimeStampCM2</name> <sharing-policy>not-shared</sharing-policy> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> </cache-id> </cache-entry> </cache-instance> <cache-instance name="services/cache/servletInstance_3"> <cache-entry> <class>servlet</class> <name>/TimeStampCM3</name> <sharing-policy>not-shared</sharing-policy> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> </cache-id> </cache-entry> </cache-instance> <cache-instance name="services/cache/servletInstance_4"> <cache-entry> <class>servlet</class> <name>ServletInstance_Esi1_ESIParent.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="parm1" type="parameter" /> <timeout>180</timeout> <priority>2</priority> </cache-id> <dependency-id> ci_dep1 <component id="parm1" type="parameter" /> </dependency-id> </cache-entry> </cache-instance> <cache-instance name="services/cache/servletInstance_5"> <cache-entry> <class>servlet</class> <name>ServletInstance_Esi2_ESIChild.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="parm2" type="parameter" /> <timeout>180</timeout> <priority>2</priority> </cache-id> <dependency-id> ci_dep4 <component id="parm2" type="parameter" /> </dependency-id> </cache-entry> </cache-instance> <cache-entry> <class>servlet</class> <name>JspRecompileTest.jsp</name> <cache-id> <component id="parm1" type="parameter" /> <timeout>180</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/DNCForwardServlet</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test1</value> <value>test2</value> <value>test3</value> <value>test4</value> <value>test6</value> <value>test8</value> <value>test10</value> </component> <property name="consume-subfragments">true</property> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test5</value> </component> <property name="consume-subfragments">true</property> <property name="do-not-consume">true</property> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test7</value> <value>test9</value> </component> <property name="EdgeCacheable">true</property> <property name="consume-subfragments">true</property> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/DNCGrandParent.jsp</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test1</value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test2</value> </component> <property name="consume-subfragments">true</property> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test3</value> </component> <property name="consume-subfragments">true</property> <property name="do-not-consume">true</property> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test5</value> </component> <property name="consume-subfragments">true</property> <property name="do-not-consume">true</property> </cache-id> <dependency-id> DNC3 <component id="test" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> DNC3 <component id="inv3" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/DNCParent1.jsp</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test1</value> <value>test3</value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test2</value> </component> <property name="consume-subfragments">true</property> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test5</value> </component> <property name="consume-subfragments">true</property> <property name="do-not-consume">true</property> </cache-id> <dependency-id> DNC2 <component id="test" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> DNC2 <component id="inv2" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/DNCChild1.jsp</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test3</value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test1</value> <value>test2</value> <value>test4</value> <value>test7</value> </component> <property name="do-not-consume">true</property> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test5</value> </component> <property name="consume-subfragments">true</property> <property name="do-not-consume">true</property> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test6</value> </component> <property name="EdgeCacheable">true</property> <property name="do-not-consume">true</property> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test10</value> </component> <property name="EdgeCacheable">true</property> <property name="do-not-consume">false</property> </cache-id> <dependency-id> DNC1 <component id="test" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> DNC1 <component id="inv1" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/JSTLForwardServlet</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test1</value> </component> <property name="consume-subfragments">true</property> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/JSTLChild1.jsp</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test1</value> </component> <property name="do-not-consume">true</property> </cache-id> <dependency-id> JSTL1 <component id="test" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> JSTL1 <component id="inv1" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/PreviewServlet</name> <property name="EdgeCacheable">true</property> <property name="consume-subfragments">true</property> <cache-id> <priority>3</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/PreviewChildServlet</name> <property name="EdgeCacheable">true</property> <cache-id> <priority>3</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/IsUncacheable.jsp</name> <cache-id> <component id="cacheable" type="parameter"> <required>true</required> <value>true</value> </component> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/Afpa.jsp</name> <property name="ExternalCache">afpa</property> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <!-- CacheMonitor CachePolicies Test entries --> <cache-entry> <class>servlet</class> <name>/CacheMonitorTestServletPolicy</name> <sharing-policy>shared-push</sharing-policy> <property name="EdgeCacheable">true</property> <property name="ExternalCache">CMTextCache</property> <cache-id> <component id="CMTparameter" type="parameter" /> <component id="CMTsession" type="session" /> </cache-id> <cache-id> <component id="CMTcookie" type="cookie" /> <component id="CMTattribute" type="attribute" /> </cache-id> <dependency-id> <component id="CMTparameterList" type="parameter-list" /> </dependency-id> <invalidation> <component id="CMTservletPath" type="servletpath" /> </invalidation> </cache-entry> <cache-entry> <class>command</class> <name>/CacheMonitorTestCommandPolicy</name> <sharing-policy>not-shared</sharing-policy> <property name="ApplicationName">CMTAppName</property> <property name="persist-to-disk">false</property> <property name="delay-invalidations">true</property> <cache-id> <component id="CMTmethod" type="method" /> </cache-id> <cache-id> <component id="CMTfield" type="field" /> </cache-id> <dependency-id> <component id="CMTmethod" type="method" /> </dependency-id> <invalidation> <component id="CMTmethod" type="method" /> </invalidation> </cache-entry> <cache-entry> <class>webservice</class> <name>/CacheMonitorTestWebservicePolicy</name> <sharing-policy>shared-push-pull</sharing-policy> <property name="consume-subfragments">true</property> <property name="do-not-consume">true</property> <cache-id> <component id="CMTSOAPEnvelope" type="SOAPEnvelope" /> <component id="CMTSOAPAction" type="SOAPAction" /> </cache-id> <cache-id> <component id="CMTserviceOperation" type="serviceOperation" /> <component id="CMTserviceOperationParameter" type="serviceOperationParameter" /> </cache-id> <dependency-id> <component id="CMTserviceOperation" type="serviceOperation" /> </dependency-id> <invalidation> <component id="CMTSOAPEnvelope" type="SOAPEnvelope" /> </invalidation> </cache-entry> <cache-entry> <class>portlet</class> <name>/CacheMonitorTestPortletPolicy</name> <sharing-policy>shared-pull</sharing-policy> <property name="save-attributes">false</property> <cache-id> <component id="CMTheader" type="header" /> </cache-id> <cache-id> <component id="CMTlocale" type="locale" /> <component id="CMTrequestType" type="requestType" /> </cache-id> <dependency-id> <component id="CMTrequestType" type="requestType" /> </dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/RangeTimeStamp.jsp</name> <!-- valid specs, will be cached if they match --> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest10</value> </component> <component id="inputvalue" type="parameter"> <required>true</required> <value>9</value> <value> <range low="-20" high="-10" /> </value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest11</value> </component> <component id="inputvalue" type="parameter"> <required>true</required> <value>0</value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest20</value> </component> <component id="inputvalue" type="parameter"> <required>true</required> <not-value> <range low="-20" high="-10" /> </not-value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest21</value> </component> <component id="inputvalue" type="parameter"> <required>true</required> <value> <range low="-50" high="200" /> </value> <not-value> <range low="-20" high="-10" /> </not-value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest22</value> </component> <component id="inputvalue" type="parameter"> <required>true</required> <value> <range low="20" high="30" /> </value> <not-value> <range low="0" high="50" /> </not-value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest23</value> </component> <component id="inputvalue" type="parameter"> <required>true</required> <value> <range low="0" high="30" /> </value> <not-value> <range low="20" high="50" /> </not-value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest24</value> </component> <component id="inputvalue" type="parameter"> <required>true</required> <value> <range low="0" high="10" /> </value> <value> <range low="20" high="30" /> </value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest30</value> </component> <component id="inputvalue" type="parameter"> <required>true</required> <value> <range low="12" high="50" /> <range low="25" high="100" /> </value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest31</value> </component> <component id="inputvalue" type="parameter"> <required>true</required> <value> <range low="12" high="50" /> </value> <value> <range low="25" high="100" /> </value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest32</value> </component> <component id="NoSuchParameterIsPresent" type="parameter"> <value> <range low="12" high="50" /> </value> <value> <range low="25" high="100" /> </value> <required>false</required> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest33</value> </component> <component id="NoSuchParameterIsPresent" type="parameter"> <required>true</required> <value> <range low="12" high="50" /> </value> <value> <range low="25" high="100" /> </value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest34</value> </component> <component id="NoSuchParameterIsPresent" type="parameter"> <required>true</required> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest35</value> </component> <component id="inputvalue" type="parameter"> <required>false</required> <value>requiredValue</value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <not-value>RangeTest36</not-value> </component> <component id="inputvalue" type="parameter"> <required>false</required> <value>notThis</value> </component> </cache-id> <!-- <dependency-id> テスト <component id="test" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> テスト <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> --> </cache-entry> <!-- ############################################################ --> <cache-entry> <class>servlet</class> <name>/RangeAttrChild.jsp</name> <!-- valid specs, will be cached if they match --> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest10</value> </component> <component id="RangeTestAttribute" type="attribute"> <required>true</required> <value>9</value> <value> <range low="-20" high="-10" /> </value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest11</value> </component> <component id="RangeTestAttribute" type="attribute"> <required>true</required> <value>0</value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest20</value> </component> <component id="RangeTestAttribute" type="attribute"> <required>true</required> <not-value> <range low="-20" high="-10" /> </not-value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest21</value> </component> <component id="RangeTestAttribute" type="attribute"> <required>true</required> <value> <range low="-50" high="200" /> </value> <not-value> <range low="-20" high="-10" /> </not-value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest22</value> </component> <component id="RangeTestAttribute" type="attribute"> <required>true</required> <value> <range low="20" high="30" /> </value> <not-value> <range low="0" high="50" /> </not-value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest23</value> </component> <component id="RangeTestAttribute" type="attribute"> <required>true</required> <value> <range low="0" high="30" /> </value> <not-value> <range low="20" high="50" /> </not-value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest24</value> </component> <component id="RangeTestAttribute" type="attribute"> <required>true</required> <value> <range low="0" high="10" /> </value> <value> <range low="20" high="30" /> </value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest30</value> </component> <component id="RangeTestAttribute" type="attribute"> <required>true</required> <value> <range low="12" high="50" /> <range low="25" high="100" /> </value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest31</value> </component> <component id="RangeTestAttribute" type="attribute"> <required>true</required> <value> <range low="12" high="50" /> </value> <value> <range low="25" high="100" /> </value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest32</value> </component> <component id="NO_SUCH_ATTRIBUTE" type="attribute"> <value> <range low="12" high="50" /> </value> <value> <range low="25" high="100" /> </value> <required>false</required> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest33</value> </component> <component id="NO_SUCH_ATTRIBUTE" type="attribute"> <required>true</required> <value> <range low="12" high="50" /> </value> <value> <range low="25" high="100" /> </value> </component> </cache-id> <dependency-id> テスト <component id="test" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> テスト <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <!-- ############################################################ --> <skip-cache-attribute>prettypleaseskipcaching</skip-cache-attribute> <cache-entry> <class>servlet</class> <name>/SkipCache1.jsp</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test01</value> </component> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/SkipCache2.jsp</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test02</value> </component> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/SkipCacheChild1.jsp</name> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/SkipCacheChild2.jsp</name> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <!-- ############################################################ --> <cache-entry> <class>servlet</class> <name>/CacheCookie1.jsp</name> <cache-id> <component id="test" type="parameter"> <value>test01</value> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> <dependency-id> テスト <component id="test" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> テスト <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/CacheCookie2.jsp</name> <property name="store-cookies"> true <exclude>cookie1</exclude> </property> <cache-id> <component id="test" type="parameter"> <value>test02</value> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> <dependency-id> テスト <component id="test" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> テスト <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/CacheCookie3.jsp</name> <property name="store-cookies"> false <exclude>cookie1</exclude> </property> <cache-id> <component id="test" type="parameter"> <value>test03</value> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> <dependency-id> テスト <component id="test" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> テスト <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/DoNotCacheParent.jsp</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test01</value> <value>test02</value> </component> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/DoNotCacheChild.jsp</name> <cache-id> <component id="test" type="parameter"> <value>test01</value> <required>true</required> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <value>test02</value> <required>true</required> </component> <property name="do-not-cache">true</property> </cache-id> </cache-entry> <!-- ############################################################ --> <cache-entry> <class>servlet</class> <name>/ConsumeSubfragmentsExcludeParent.jsp</name> <!-- Note: since the child jsps don't have their own cache-entry's, they should never be cached themselves, only as part of the parent result depending on this config --> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test01</value> </component> <property name="consume-subfragments"> true <exclude>/ConsumeSubfragmentsExcludeChild1.jsp</exclude> </property> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test02</value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test03</value> </component> <property name="consume-subfragments">true</property> </cache-id> </cache-entry> <!-- ############################################################ --> <cache-entry> <class>servlet</class> <name>/static.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>static</class> <name>/static.html</name> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>static</class> <name> com.ibm.ws.webcontainer.servlet.SimpleFileServlet.class </name> <cache-id> <component id="" type="pathinfo"> <required>true</required> </component> <component id="useSFServlet" type="parameter"> <required>true</required> <value>true</value> </component> <timeout>300</timeout> </cache-id> </cache-entry> <cache-entry> <class>static</class> <name>/static2.html</name> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/MultiIncludeParamRemoteServlet</name> <property name="consume-subfragments">false</property> <cache-id> <timeout>0</timeout> <component id="test" type="parameter"> <required>true</required> <value>MultiIncludeParamRemoteServlet</value> </component> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/MultiIncludeParamRemoteServlet</name> <property name="consume-subfragments">false</property> <cache-id> <timeout>0</timeout> <component id="test" type="parameter"> <required>true</required> <value>MultiIncludeParamServlet</value> </component> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/RemoteServlet</name> <property name="consume-subfragments">false</property> <property name="do-not-consume">true</property> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/RemoteServlet2</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/NonBlockingFragmentResponseServlet</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>0</timeout> <component id="test" type="parameter"> <required>true</required> <value>NonBlockingFragmentResponseServlet</value> </component> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/BlockingFragmentResponseServlet</name> <property name="consume-subfragments">false</property> <cache-id> <timeout>0</timeout> <component id="test" type="parameter"> <required>true</required> <value>BlockingFragmentResponseServlet</value> </component> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/JSTLIKEA.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test1</value> </component> </cache-id> </cache-entry> </cache>