cachespec.xml 文件
当服务器启动时,高速缓存会解析 cachespec.xml 文件,并从每个 cache-entry 元素中抽取一组配置参数。 每当新的 Servlet 或其他可高速缓存对象初始化时,高速缓存会尝试与每个这样的 cache-entry 元素匹配以查找该对象的配置信息。
cache-entry 元素可位于根 cache 元素或 cache-instance 元素中。 通过缺省高速缓存实例来高速缓存根元素中的高速缓存条目。 <cache-instance> 元素中的高速缓存条目将在该特定高速缓存实例中进行高速缓存。 不同的可高速缓存对象具有不同的 class 元素。 使用
name 元素,您可以定义高速缓存策略所引用的特定对象。
位置
将 cachespec.xml 文件与部署模块放在一起。 使用组装工具来定义可高速缓存对象。 请参阅有关组装应用程序的主题。 您也可以将全局 cachespec.xml 文件放在应用程序服务器属性目录下。 在应用程序服务器属性目录中存在全局 cachespec.xml 文件并且应用程序中存在 cachespec.xml 文件的情况下,会合并 2 个 cachespec.xml 文件中的条目。 如果 2 个文件中存在有冲突的条目,那么 应用程序的 cachespec.xml 文件中的条目优先于该应用程序的全局 cachespec.xml 文件中的条目。
在应用程序服务器属性目录中提供了 cachespec.dtd 文件。 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>name 属性是管理控制台中设置的高速缓存实例的 Java 命名和目录接口 (JNDI) 名称。
每个 cache-instance 元素必须至少包含一个 cache-entry 元素。 将 cache-instance 元素中匹配的高速缓存条目高速缓存到名称属性指定的 Servlet 高速缓存实例中。 如果 cache-instance 元素间存在相同的 cache-entry 元素,那么使用第一个匹配的 cache-entry 元素。
- cache-entry
- 每个高速缓存条目都必须指定动态高速缓存用来处理该条目的某些基本信息。 本部分解释 cachespec.xml 文件的每个高速缓存条目元素的功能,包括下列各项:
- 类
- 名称
- sharing-policy
- skip-cache
- property
- cache-id
使用当前版本的 WebSphere® Application Server,您可以为单个 servlet 定义多个高速缓存策略。 例如,如果为
web.xml文件中的 Servlet 定义多个映射,那么可以为每个这样的映射都创建一个高速缓存条目。
- 类
<class>command | servlet | webservice | JAXRPCClient | static | portlet </class>此元素是必需的,并且它指定应用程序服务器解释其余高速缓存策略定义的方式。 值
servlet是指部署在 WebSphere Application Server Servlet 引擎中的 Servlet 和 JavaServer Pages (JSP) 文件。webservice类使用特殊组件类型的 Web Service 请求来扩展 Servlet。JAXRPCClient用于定义 Web Service 客户机高速缓存的高速缓存条目。 值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 文件中指定命令高速缓存,并且未对运行应用程序的应用程序服务器启用 Servlet 高速缓存,那么将发生错误。 应用程序服务器仍尝试获取高速缓存实例;因此,启用 Servlet 高速缓存将消除错误。 - 对于 Servlet 和 JSP 文件,如果 cachespec.xml 文件位于 WebSphere Application Server 属性目录中,那么此必需元素必须包含要高速缓存的 JSP 文件或 Servlet 的完整 URI。 对于 Servlet 和 JSP 文件,如果
cachespec.xml文件在 Web 应用程序中,那么此必需元素可以相对于特定的 Web 应用程序上下文根。 - 对于 Web Service,请包括与要高速缓存的 Web Service 关联的简单对象访问协议 (SOAP) 路由器的通用资源标识 (URI)。
- 对于 Web Service 客户机高速缓存,名称是可高速缓存 Web Service 的目标端点或者是与可高速缓存 Web Service 关联的 SOAP 路由器的 URI。 可以在 Web Service 描述语言 (WSDL) 文件中使用 SOAP 地址位置来定义 Web Service 客户机高速缓存的名称。
- 对于静态文件,如果 cachespec.xml 文件位于 WebSphere Application Server 属性目录中,那么此必需元素必须包含要高速缓存的文件的完整 URI。 如果
cachespecm.xml文件在 Web 应用程序中,那么此必需元素可以相对于特定的 Web 应用程序上下文根。 对于具有上下文根的 Web 应用程序,必须在 Web 应用程序而不是在属性目录中指定使用静态类的文件的高速缓存策略。 - 对于 Portlet ,如果 cachespec.xml 文件位于 WebSphere Application Server 属性目录中,那么此必需元素必须包含要高速缓存的 Portlet 的完整上下文路径和名称。 如果 cachespec.xml 文件在 Web 应用程序中,那么此必需元素是相对于特定的 Web 应用程序上下文根的 Portlet 名称。
提示: cachespec.xml 文件的首选位置位于 Web 应用程序中,而不是属性目录中。如果具有引用了同一 Servlet 的不同映射,那么可以在 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。 此属性不会影响通过边缘片段高速缓存属性发布 ESI (Edge Side Include) 处理器。表 1. 共享策略值。 共享策略的值和描述。 值 描述 not-shared 此对象的高速缓存条目在不同的应用程序服务器之间不共享。 这些条目可以包含非序列化的数据。 例如,如果 <class>类型支持,那么高速缓存的 servlet 可以将不可序列化的对象放入请求属性中。避免麻烦: 应用程序服务器将始终复制失效条目。 它们不会受共享策略的影响。shared-push 此对象的高速缓存条目将自动分发到其他应用程序服务器或协作 Java 虚拟机 (JVM) 中的动态高速缓存。 每个高速缓存在创建时就具有了该条目的副本。 这些条目不能存储非序列化的数据。 shared-pull 在需要时,会在应用程序服务器之间共享此对象的高速缓存条目。 如果应用程序服务器获得此对象的高速缓存不命中,那么它会查询协同操作的应用程序服务器,以了解他们是否具有该对象。 如果没有任何应用程序服务器有该对象的已高速缓存副本,那么原始应用程序服务器就会运行该请求并生成该对象。 这些条目不能存储非序列化的数据。 建议不要使用此共享方式。 shared-push-pull 在需要时,会在应用程序服务器之间共享此对象的高速缓存条目。 当应用程序服务器生成高速缓存条目时,它将已创建条目的高速缓存标识广播到所有协同操作的应用程序服务器。 然后,每个服务器就知道对于任何给定的高速缓存标识是否都存在一个条目。 对于该条目的给定请求,应用程序服务器就知道是否要生成条目或将它从其他地方拉出来。 这些条目不能存储非序列化的数据。 下列示例显示共享策略:<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 是相应的值。
您可以在可高速缓存对象上设置可选属性,如已配置的 Servlet 的描述。 该类确定高速缓存条目的有效属性。 此时,定义了下列属性:
表 2. 属性值。 属性值和有效类。 属性 有效类 值 ApplicationName 全部 覆盖 JavaEEName 应用程序标识以使多个应用程序可共享公共高速缓存标识名称空间。 EdgeCacheable Servlet true 或 false。 缺省值为 false。 如果该属性为true,那么会从 ESI (Edge Side Include) 处理器外部请求给定的 Servlet 或 JSP 文件。 Servlet 或 JSP 文件是否可高速缓存,这取决于高速缓存规范的其余部分。边缘可高速缓存高速缓存条目的常规可容许组件是 PARAMETER、HEADER、COOKIE 和 PATH_INFOSERVLET_PATH
ExternalCache Servlet 和 portlet 指定外部高速缓存名。 外部高速缓存名需要与外部高速缓存组名匹配。 consume-subfragments Servlet、Web Service 或 portlet true 或 false。 缺省值为 false。 当高速缓存 Servlet 时,仅存储该 Servlet 的内容,并且包括它要包含或转发的任何其他片段的占位符。 Consume-subfragments (CSF) 告知高速缓存,当它包括子 Servlet 时不要停止保存内容。 标记为 CSF 的父条目包括其高速缓存条目中所有片段的全部内容,这会产生一个很大的高速缓存条目,其中只有来自整个条目树的内容,没有包含或转发。 Consume-subfragments 可以保存数量可观的应用程序服务器处理,但是,通常当外部 HTTP 请求包含确定已包括片段的整个树所需的所有信息时,它才是有用的。使用<exclude>元素来指示高速缓存停止使用已排除的片段,而改为创建包含或转发的占位符。 例如,将A.jsp从 consume-subfragment 中排除,如下所示:<property name="consume-sbufragments">true <exclude>/A.jsp<exclude> </property>do-not-consume Servlet、Web Service 或 portlet true 或 false。 缺省值为 false。 当父片段的 consume-subfragment 属性设置为 true 时,子片段内容会保存在父代的高速缓存条目中。 Do-not-consume (DNC) 告知高速缓存停止在父高速缓存条目中保存此片段的内容以及要为包含或转发创建占位符。alternate_url Servlet 指定用来调用 Servlet 或 JSP 文件的备用 URL。 仅当为高速缓存条目也设置 EdgeCacheable 属性时,此属性才有效。 persist-to-disk 全部 true 或 false。 缺省值为 true。 当此属性设置为false时,如果发生溢出或服务器停止的情况,那么高速缓存条目不会被写至磁盘。save-attributes Servlet 和 portlet true 或 false。 缺省值为 true。 当此属性设置为false时,请求属性不随高速缓存条目一起保存。使用<exclude>元素来指定不适用于 save-attributes 属性的请求属性。 例如,要仅将 attr1 属性与高速缓存条目一起保存:<property name="save-attributes">false <exclude>attr1</exclude> </property>要保存高速缓存条目中的所有属性(除了
attr1属性之外),请在前述示例中将该属性设置为 true。 如果不使用<exclude>元素,那么将随高速缓存条目一起保存所有请求属性或不保存任何请求属性。delay-invalidations 命令 true 或 false。 当此属性设置为 true时,如果运行根据无效规则使此高速缓存条目中的已高速缓存对象变得无效的命令,那么他们会使高速缓存条目变得无效。 缺省情况下,在此命令运行之前条目变得无效。store-cookies Servlet 和 portlet On 或 off。 缺省值为 On。 此属性将一个或多个 cookie 名称当作其自变量,该自变量随高速缓存对象一起保存且在使用 set-cookie 头响应期间由 Servlet 高速缓存进行恢复。请将除了 cookie1 之外的所有 cookie 另存为高速缓存条目的一部分,如下所示:<property name="store-cookies">true <exclude>cookie</exclude> </property>请仅将 cookie1 另存为高速缓存条目的一部分,如下所示:<property name="store-cookies">false <exclude>cookie1</exclude> </property>ignore-get-post Servlet 和 portlet true 或 false。 缺省值为 false。 当该属性设置为true时,除非 requestType 组件 requestType component 子元素已定义,否则请求类型不会被追加至 GET 和 POST 请求的 cache-id。 缺省情况下,请求类型会被自动追加至 GET 和 POST 请求的 cache-id。ignore-char-encoding Servlet 和 portlet true 或 false。 缺省值为 false。 当此属性设置为true时,不会将 UTF-8 字符编码追加至高速缓存标识。 将 UTF-8 字符编码追加至高速缓存标识可能会导致片段的多份副本,这就会不必要地增加高速缓存的大小。do-not-cache Servlet 和 portlet 定义既未高速缓存也未由父代使用的片段。
或<cache-entry> ... <property name="do-not-cache">true</property><cache-id> <property name="do-not-cache">true</property> </cache-id> </cache-entry>
- cache-id
- 要高速缓存对象,应用程序服务器必须知道如何为此对象的不同调用生成唯一标识。 这些标识是根据用户编写的定制 Java™ 代码或根据每个高速缓存条目的高速缓存策略中定义的规则构建的。 在发生以下情况之前,每个高速缓存条目可具有按顺序运行的多个高速缓存标识规则:
- 规则返回非空高速缓存标识,或
- 没有更多的规则要运行。
每个 cache-id 元素都定义高速缓存对象的规则,并且它是由子元素组件(timeout、inactivity、priority、property、idgenerator 和 metadatagenerator)组成的。 下列示例说明 cache-id 元素:<cache-id> component*| timeout? | inactivity? | priority? | property* | idgenerator? | metadatagenerator? </cache-id>
- component 子元素
请使用组件子元素来生成高速缓存标识部分。 component 子元素由属性 id、type 和 ignore-value 以及元素 index、method、field、required、value 和 not-value 组成。
- 请使用 id 属性标识组件。
- 请使用 type 属性标识组件的类型。 下表列出类型值。避免麻烦: 在 cachespec.xml 文件中指定参数组件子元素时, Web 容器会根据从请求对象获取的编码设置来设置字符编码。 如果 Servlet 随后调用 setCharacterEncoding 方法,此方法将无效,因为字符编码在设置后无法更改。
表 3. 输入值。 类型的有效类和含义。 Type 有效类 含义 方法 命令 调用 command 或 object 上指示的方法 字段 命令 检索 command 或 object 中指定的字段 参数 Servlet 和 portlet 从请求对象中检索指定的参数值 parameter-list Servlet 和 portlet 检索指定参数的值列表 高速缓存将捕获具有此名称的所有参数的值,并按其捕获顺序使用所有这些值来创建高速缓存标识。
会话 Servlet 和 portlet 从 HTTP 会话中检索指定的值 cookie Servlet 检索指定的 cookie 值 指标 Servlet 和 portlet 检索指定的请求属性 头 Servlet、Web Service 和 portlet 检索指定的请求头 pathInfo Servlet 从请求中检索 pathInfo 元素 servletpath Servlet 检索 Servlet 路径 locale Servlet 和 portlet 检索请求语言环境 注意: 仅当使用 RRD 时,语言环境组件才允许用于 edgecacheable 条目。 语言环境组件对所有其他 ESI 版本均无效。requestType Servlet 和 portlet 从请求中检索 HTTP 请求方法。 注意: 使用 RRD 时,仅允许 edgecacheable 条目使用 requestType 组件。 requestType 组件对所有其他 ESI 版本均无效。tiles_attribute Servlet 和 portlet 从平铺中检索属性值。 SOAPEnvelope Web Service 和 Web Service 客户机高速缓存 从 Web Service 请求中检索 SOAPEnvelope 元素。 Hash 的 ID 属性使用 SOAPEnvelope 元素的 Hash,而 Literal 按接收时的情况使用 SOAPEnvelope 元素。 SOAPAction Web 服务 如果 SOAPAction 头可用,那么为 Web Service 请求检索 SOAPAction 头。 serviceOperation Web 服务 检索 Web Service 请求的服务操作 serviceOperationParameter Web 服务 从 Web Service 请求中检索指定的参数 操作 Web Service 客户机高速缓存 指示 Web Service 描述语言 (WSDL) 文件中的操作类型。 忽略 id 属性且值为操作或方法名。 如果指定了操作的名称空间,请将值格式化为 namespaceOfOperation:nameOfOperation。 部分 Web Service 客户机高速缓存 指示 WSDL 文件中的输入消息部件或请求参数。 它的 id 属性是部件或参数的名称,并且值为部件或参数的值。 SOAPHeaderEntry Web Service 客户机高速缓存 检索 Web Service 请求的简单对象访问协议 (SOAP) 头中的特殊信息。 id 属性指定条目名。 另外,SOAP 请求中 SOAP 头的条目必须具有 actor 属性,该属性包含 com.ibm.websphere.cache。 例如: <soapenv:Header> <getQuote soapenv:actor="com.ibm.websphere.cache">IBM</getQuote> </soapenv:Header>portletSession Portlet 从 portlet 会话中检索指定的值 portletWindowId Portlet 从 portlet 请求对象中检索 portlet 窗口标识 portletMode Portlet 从 portlet 请求对象中检索 portlet 方式 portletWindowsState Portlet 从 portlet 请求对象中检索 portlet 窗口状态 sessionID Servlet 和 portlet 检索 HTTP 会话标识 - 请使用 ignore-value 属性来指定是否要在高速缓存标识信息中使用此组件返回的值。 此属性可选且缺省值为
false。 如果值为true,那么创建高速缓存标识时仅使用组件的标识,或创建依赖项或无效标识时不使用输出。 - 请使用 method 元素来对返回的对象调用空方法。 您可以在任何组合中无限嵌套方法和字段对象。 该方法必须是公用的且对于边缘可高速缓存组件是无效的。 例如:
<component id="getUser" type="method"><method>getUserInfo <method>getName</method></method></component>此方法等价于 getUser().getUserInfo().getName()
对于可以返回对象的组件类型 attribute、method 或 field,当返回的对象是一个集合或数组时,标识是用集合或数组中以逗号分隔的元素列表来创建的。 例如,如果请求属性用户返回数组 [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>users: a,b。 依赖关系标识为dep: a,b。请将 multipleIDs 属性与组件类型配合使用来根据集合或数组中的项指定和生成多个依赖项标识(或无效标识)。 例如:
高速缓存策略将生成以下依赖项标识:<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,bdep:adep:b
请使用具有前一组件类型的 index 元素来只将集合或数组中在指定索引位置的元素值添加到要创建的标识中。
先前的高速缓存策略生成要在高速缓存标识中使用的以下组件:<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>users: b。 使用<method>元素对返回的对象调用 void 方法。 - 请使用 field 元素来访问返回的对象中的字段。 您可以在任何组合中无限嵌套方法和字段对象。 该字段必须是公用的。 此字段对于边缘可高速缓存组件无效。 例如:
<component id="getUser" type="method"><method>getUserInfo <field>name</field></method></component>此方法等同于
getUser().getUserInfo().name方法。 - 请使用 required 元素来指定此组件是否必须返回此高速缓存标识的非空值以表示为有效的高速缓存。 如果设置为
true,此组件必须为此高速缓存标识返回非空值以表示有效的高速缓存标识。 如果设置为false(缺省值),那么在高速缓存标识构成中使用非空值,而空值意味着在标识构成中根本不使用此组件。 例如:<required>true</required> - 请使用 value 元素来指定为在高速缓存标识构成中使用此组件而必须匹配的值。 例如:
<component id="getUser" type="method"><value>blue</value> <value>red</value> </component> - 请使用 not-value 元素来指定为在高速缓存标识构成中使用此组件而不能匹配的值。 此方法类似于 value 元素,但却规定高速缓存已定义的值。 当存在多个无效的 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>
- property 子元素
- 请使用 property 子元素来指定高速缓存条目的一般属性。 例如
<property name="key">value</property>其中 key 是要定义的属性名,value 是相应的值。
例如:<property name="description">The Snoop Servlet</property>表 4. 属性子元素值。。 属性有效类和含义。 属性 有效类 含义 sharing-policy/timeout/priority 全部 当请求与此高速缓存标识匹配时覆盖包含高速缓存条目的设置。 EdgeCacheable Servlet 当请求与此高速缓存标识匹配时覆盖包含高速缓存条目的设置。
idgenerator 和 metadatagenerator 子元素
<idgenerator> class name </idgenerator>其中 class name 是要使用的类的标准名称。 在共享库中定义该 generator 类。metadatagenerator 元素的示例如下所示:<metadatagenerator> classname </metadatagenerator>在此示例中,class name 是要使用的类的标准名称。 在共享库中定义该 generator 类。dependency-id 元素
使用 dependency-id 元素来指定将多个高速缓存条目与同一组标识关联的其他高速缓存标识。
请通过将依赖项标识基本字符串与它的组件元素返回的值并置来生成 dependency-id 元素的值。 如果必需的组件返回空值,那么既不会生成也不会使用完整的依赖项。 通过动态高速缓存 API 或使用 invalidation 元素来显式地验证依赖项标识。 一个 cache-entry 元素中可存在多个依赖项标识规则。 所有的依赖项规则都单独运行。
invalidation 元素
<invalidation>component* | invalidationgenerator? </invalidation>invalidationgenerator 子元素
<invalidationgenerator>class name</invalidationgenerator>在此示例中,classname 是实现 com.ibm.websphere.cache.webservices.InvalidationGenerator 接口的类的标准名称。 在共享库中定义该 generator 类。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>
test
<component id="test" type="parameter">
<required>true</required>
</component>
</dependency-id>
<invalidation>
test
<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>
test
<component id="test" type="parameter">
<required>true</required>
</component>
</dependency-id>
<invalidation>
test
<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>
test
<component id="test" type="parameter">
<required>true</required>
</component>
</dependency-id>
<invalidation>
test
<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>
test
<component id="test" type="parameter">
<required>true</required>
</component>
</dependency-id>
<invalidation>
test
<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>
test
<component id="test" type="parameter">
<required>true</required>
</component>
</dependency-id>
<invalidation>
test
<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>