Archivo cachespec.xml

La memoria caché analizará el archivo cachespec.xml cuando se inicia el servidor y extraerá un conjunto de parámetros de configuración de cada elemento cache-entry. Cada vez que se inicialice un nuevo servlet u otro objeto almacenable en la memoria caché, la memoria caché intentará comparar cada uno de los elementos cache-entry para encontrar la información de configuración de dicho objeto.

Los elementos cache-entry pueden estar dentro del elemento cache de raíz o dentro de un elemento cache-instance. Las entradas de memoria caché que están en el elemento root se colocan en memoria caché con la instancia de memoria caché por omisión. Las entradas de memoria caché que están en el elemento <cache-instance> se colocan en memoria caché en esa instancia de memoria caché en particular. Los distintos objetos que se pueden colocar en antememoria tienen elementos class diferentes. Puede definir el objeto específico al que hace referencia la política de memoria caché utilizando el elemento name.

Ubicación

Sitúe el archivo cachespec.xml con el módulo de despliegue. Utilice una herramienta de ensamblaje para definir los objetos que se pueden colocar en memoria caché. Consulte los temas acerca del ensamblaje de aplicaciones. También puede situar un archivo cachespec.xml global en el directorio properties del servidor de aplicaciones. Cuando hay un archivo cachespec.xml global en el directorio de propiedades del servidor de aplicaciones y un archivo cachespec.xml en una aplicación, se fusionan las entradas de los dos archivos cachespec.xml. Si hay entradas conflictivas en los dos archivos, las entradas del archivo cachespec.xml que se encuentra en la aplicación prevalecen sobre las entradas del archivo cachespec.xml global para esa aplicación.

El archivo cachespec.dtd está disponible en el directorio properties del servidor de aplicaciones. El archivo cachespec.dtd define la estructura válida y los elementos que puede contener el archivo cachespec.xml.

Notas sobre la utilización

Elementos de Cachespec.xml
El elemento raíz del archivo cachespec.xml es cache, que contiene elementos cache-instance y cache-entry. Los elementos cache-entry también se pueden colocar dentro de los elementos cache-instance para hacer que esa entrada de memoria caché forme parte de una instancia de memoria caché distinta de la que toma por omisión.
cache-instance
<cache-instance name="nombre_instancia_memoria caché"></cache-instance>

El atributo name es el nombre de la JNDI (Java™ Naming and Directory Interface) de la instancia de memoria caché que se establece en la consola de administración.

Cada elemento cache-instance debe contener al menos un elemento cache-entry. La entrada de memoria caché que se compara dentro de un elemento cache-instance se coloca en memoria caché en la instancia de memoria caché del servlet que se especifica mediante el atributo name. Si existen elementos cache-entry idénticos en los elementos cache-instance, se utiliza el primer elemento cache-entry que coincide.

cache-entry
En cada entrada de memoria caché se debe especificar una información básica determinada que la memoria caché dinámica utilizará para procesar la entrada. En este apartado se describe la función de cada uno de los elementos de entrada de memoria caché del archivo cachespec.xml:
  • clase
  • nombre
  • sharing-policy
  • skip-cache
  • property
  • cache-id

Con la versión actual de WebSphere Application Server, puede definir varias políticas de memoria caché para un solo servlet. Por ejemplo, si define varias correlaciones para un servlet en el archivo web.xml, puede crear una entrada de memoria caché para cada una de las correlaciones.

clase

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

Este elemento es necesario y especifica cómo interpreta el servidor de aplicaciones el resto de la definición de la política de memoria caché. El valor servlet hace referencia a los servlets y los archivos JSP (JavaServer Pages) desplegados en el motor de servlets de WebSphere Application Server. La clase webservice amplía el servlet con tipos de componentes especiales para las solicitudes de servicios web. JAXRPCClient se utiliza para definir una entrada de memoria caché para la memoria caché del cliente de servicios web. El valor command hace referencia a las clases que utilizan el modelo de programación de mandatos de WebSphere Application Server. El valor static hace referencia a archivos donde se encuentra el contenido estático. A continuación se proporcionan algunos ejemplos del elemento class:

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

<name>nombre</name>

Utilice las directrices siguientes para que el elemento name especifique un objeto que se puede colocar en memoria caché:
  • Para los mandatos, este elemento necesario debe incluir el nombre de paquete, si existe, y el nombre de clase, acabado en .\class, del objeto configurado.
    Importante: si especifica el almacenamiento en la memoria caché del mandato en el archivo cachespec.xml, y el almacenamiento en la memoria caché de servlet no está habilitado para el servidor de aplicaciones en el que se ejecuta la aplicación, recibirá un error. El servidor de aplicaciones sigue intentando obtener una instancia de memoria caché; por consiguiente, si habilita el almacenamiento en la memoria caché del servlet, eliminará el error.
  • Para servlets y archivos JSP, si el archivo cachespec.xml está en el directorio properties de WebSphere Application Server, este elemento necesario debe incluir el URI completo del archivo JSP o servlet en la memoria caché. Para servlets y archivos JSP, si el archivo cachespec.xml está en la aplicación web, este elemento necesario puede ser relativo a la raíz de contexto específica de la aplicación web.
  • Para servicios web, incluya el URI (Universal Resource Identifier) del direccionador SOAP (Simple Object Access Protocol) asociado al servicio web que desea colocar en memoria caché.
  • Para la memoria caché del cliente de servicios web, el nombre es el punto final de destino del servicio web almacenable en la memoria caché o el URI del direccionador SOAP asociado con el servicio web almacenable en la memoria caché. Puede utilizar la ubicación de la dirección SOAP en el archivo WSDL (Web Services Description Language) para definir el nombre de la memoria caché del cliente de servicios web.
  • Para archivos estáticos, si el archivo cachespec.xml está en el directorio properties de WebSphere Application Server, este elemento necesario debe incluir el URI completo del archivo que se va a colocar en memoria caché. Si el archivo cachespecm.xml está en la aplicación web, este elemento necesario puede ser relativo a la raíz de contexto específica de la aplicación web. Para aplicaciones web con una raíz de contexto, la política de memoria caché para archivos que utilizan la clase static debe especificarse en la aplicación web y no en el directorio properties.
  • Para los portlets, si el archivo cachespec.xml está en el directorio properties de WebSphere Application Server, este elemento necesario debe incluir el nombre y la vía de acceso de contexto completos del portlet que se va a colocar en memoria caché. Si el archivo cachespec.xml está en la aplicación web, este elemento necesario es el nombre de portlet relativo a la raíz de contexto específica de la aplicación web.
Consejo: La ubicación preferida del archivo cachespec.xml es en la aplicación web, no en el directorio properties.

Puede especificar varios elementos name dentro de cache-entry si tiene varias correlaciones diferentes que hacen referencia al mismo servlet.

A continuación se proporcionan algunos ejemplos del elemento 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>

Cuando se trabaja en un clúster con una memoria caché distribuida, estos valores determinan las características compartidas de las entradas que se han creado a partir de este objeto. Si este elemento no está presente, se presupone not-shared.[AIX Solaris HP-UX Linux Windows] En entornos de un solo servidor, el único valor válido es not-shared. [z/OS]En la plataforma z/OS, puede habilitar la réplica entre sirvientes de un servidor de aplicaciones base utilizando las propiedades personalizadas DynacacheEnableUnmanagedServerReplication y DynacacheUnmanagedServerReplicationType de la máquina virtual Java (JVM). Cuando se habilita la duplicación, el valor predeterminado es not-shared. Esta propiedad no afecta la distribución a los procesadores Edge Side Include mediante la propiedad de colocación en memoria caché de fragmentos Edge.

[AIX Solaris HP-UX Linux Windows][z/OS]Consulte el artículo Configuración de la réplica de la memoria caché para obtener más información.

Tabla 1. Valores sharing-policy . Los valores y la descripción de sharing-policy.
Value Descripción
not-shared Las entradas de memoria caché de este objeto no se comparten entre los distintos servidores de aplicaciones. Estas entradas pueden contener datos no serializables. Por ejemplo, un servlet en memoria caché puede colocar objetos no serializables en los atributos de la solicitud, si el tipo <class> le da soporte.
Avoid trouble Avoid trouble: El servidor de aplicaciones siempre replicará entradas de invalidación. No les afecta la política de uso compartido.gotcha
shared-push Las entradas de memoria caché de este objeto se distribuyen automáticamente en las memorias caché dinámicas de otros servidores de aplicaciones o JVM (Máquina virtual Java) de colaboración. Cada memoria caché tendrá una copia de la entrada en el momento que se cree. Estas entradas no pueden almacenar datos no serializables.
shared-pull Las entradas de memoria caché de este objeto se comparten entre los servidores de aplicaciones según sea necesario. Si un servidor de aplicaciones detecta que falta antememoria para este objeto, consulta a los servidores de aplicaciones de colaboración para ver si tienen el objeto. Si ningún servidor de aplicaciones tiene una copia en antememoria de este objeto, el servidor de aplicaciones original ejecuta la petición y genera el objeto. Estas entradas no pueden almacenar datos no serializables. No se recomienda esta modalidad de uso compartido.
shared-push-pull Las entradas de memoria caché de este objeto se comparten entre los servidores de aplicaciones según sea necesario. Cuando un servidor de aplicaciones genera una entrada de memoria caché, emite el ID de memoria caché de la entrada creada a todos los servidores de aplicaciones de colaboración. De esta forma, todos los servidores sabrán si existe una entrada para un ID de memoria caché determinado. Para una solicitud determinada de esa entrada, el servidor de aplicaciones sabrá si debe generar la entrada o importarla de otro sitio. Estas entradas no pueden almacenar datos no serializables.
En el ejemplo siguiente se muestra una política de uso compartido:
<sharing-policy>not-shared</sharing-policy>
skip-cache
Toma el nombre de un atributo de la solicitud, que si está presente en el contexto de la solicitud, determina que la respuesta no puede recuperarse de la instancia de memoria caché que se especifica. Esta propiedad es útil para obtener la vista previa del contenido en los sistemas de producción y verificar que el funcionamiento y rendimiento de la aplicación son los esperados.
<cache>
	<skip-cache-attribute>att1</skip-cache-attribute>	<!–Sólo se aplica a la memoria caché básica- ->
...
<cache-instance name="instance1">
<skip-cache-attribute>att2</skip-cache-attribute> <!-Sólo se aplica a esta instancia- ->
...
</cache-instance>
</cache>
property

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

donde clave es el nombre de la propiedad para este elemento de entrada de memoria caché y valor es el valor correspondiente.

Se pueden establecer propiedades opcionales en un objeto que se puede colocar en memoria caché como, por ejemplo, una descripción del servlet que se configurado. La clase determina las propiedades válidas de la entrada de memoria caché. En este momento, se definen las propiedades siguientes:

Tabla 2. Valores de propiedad. Los valores de propiedad y las clases válidas.
Propiedad Clases válidas Value
ApplicationName Todos Altera el ID de aplicación de JavaEEName, de modo que varias aplicaciones puedan compartir un espacio de nombres de ID de memoria caché común.
EdgeCacheable Servlet True o false. El valor predeterminado es false. Si el valor de la propiedad es true, entonces, se puede solicitar externamente el servlet específico a un procesador Edge Side Include. Si el servlet o el archivo JSP se puede almacenar en la memoria caché dependerá del resto de la especificación de la memoria caché.

Los componentes permitidos para las entradas de memoria caché edgecacheable generales son PARAMETER, HEADER, COOKIE y PATH_INFOSERVLET_PATH.

ExternalCache Servlet y portlet Especifica el nombre de memoria caché externa. Es necesario que el nombre de memoria caché externa coincida con el nombre de grupo de memoria caché externa.
consume-subfragments Servlet, servicio web o portlet True o false. El valor predeterminado es false. Cuando un servlet se pone en la memoria caché, solamente se almacena el contenido de dicho servlet e incluye los contenedores para cualquier fragmento con includes o forwards. Consume-subfragments (CSF) indica a la memoria caché que no deje de guardar el contenido cuando incluye un servlet hijo. La entrada padre, la que está marcada con CSF, incluye todo el contenido de todos los fragmentos de su entrada de memoria caché, lo que dará como resultado una entrada de memoria caché grande que no poseerá sentencias include o forward, sino el contenido de todo el árbol de entradas. Consume-subfragments puede ahorrar una cantidad importante de proceso del servidor de aplicaciones, pero generalmente solamente resulta útil cuando la solicitud HTTP externa contiene toda la información necesaria para determinar el árbol completo de fragmentos incluidos.
Utilice el elemento <exclude> para indicar a la memoria caché que detenga el consumo para el fragmento excluido y, en su lugar, cree un representante para la inclusión o el reenvío. Por ejemplo, excluya A.jsp de consume-subfragment, como se indica:
<property name="consume-sbufragments">true
<exclude>/A.jsp<exclude>
</property>
do-not-consume Servlet, servicio web o portlet True o false. El valor predeterminado es false. Cuando un fragmento padre tiene la propiedad consume-subfragment establecida en true el contenido del fragmento hijo se guarda en la entrada de memoria caché del padre. DNC (Do-not-consume) indica a la memoria caché que deje de guardar el contenido de este fragmento en la entrada de memoria caché padre y cree un representante en su lugar para la inclusión o el reenvío.
alternate_url Servlet Especifica el otro URL que se utiliza para invocar el servlet o el archivo JSP. La propiedad sólo es válida si también se establece la propiedad EdgeCacheable para la entrada de memoria caché.
persist-to-disk Todos True o false. El valor predeterminado es true. Si se establece esta propiedad como false, la entrada de memoria caché no se graba en el disco cuando se produce un desbordamiento o se detiene el servidor.
save-attributes Servlet y portlet True o false. El valor predeterminado es true. Si se establece esta propiedad como false, los atributos de la solicitud no se guardan con la entrada de memoria caché.
Utilice el elemento <exclude> para especificar los atributos de la solicitud que no se aplican a la propiedad save-attributes. Por ejemplo, para guardar sólo el atributo attr1 con la entrada de memoria caché:
<property name=
  "save-attributes">false
<exclude>attr1</exclude>
</property>

Para guardar todos los atributos excepto el atributo attr1 en la entrada de memoria caché, establezca la propiedad en true en el ejemplo anterior. Si no utiliza el elemento <exclude> se guardará en la entrada de memoria caché o todos o ningún atributo de la solicitud.

delay-invalidations Mandato True o false. Cuando esta propiedad está establecida en true, los mandatos que invalidan objetos colocados en memoria caché basándose en las normas de invalidación de esta entrada de memoria caché invalidan las entradas de memoria caché después de la ejecución. De forma predeterminada, la invalidación se produce antes de que se ejecuta el mandato.
store-cookies Servlet y portlet On u off. El valor predeterminado es On. Esta propiedad toma uno o más nombres de cookie como argumento, que se guarda junto con el objeto de memoria caché y que la memoria caché de servlet restaura en la respuesta con una cabecera set-cookie.
Guarde todos los cookies excepto cookie1 como parte de cache-entry, como se muestra a continuación:
<property name="store-cookies">true
<exclude>cookie</exclude>
</property>
Sólo guarde cookie1 como parte de cache-entry, como se muestra a continuación:
<property name="store-cookies">false
<exclude><cookie1</exclude>
</property>
ignore-get-post Servlet y portlet True o false. El valor predeterminado es false. Cuando esta propiedad se establece en true, el tipo de solicitud no se añade a cache-id para las solicitudes GET y POST a menos que se defina el subelemento del componente requestType. De forma predeterminada, el tipo de solicitud se añade automáticamente a cache-id para las solicitudes GET y POST.
ignore-char-encoding Servlet y portlet True o false. El valor predeterminado es false. Cuando la propiedad se establece en true, la codificación de carácter UTF-8 no se añade al ID de la memoria caché. Si se añade la codificación de carácter UTF-8 al ID de la memoria caché, es posible que se creen varias copias de fragmentos, lo que incrementa innecesariamente el tamaño de l a memoria caché.
do-not-cache Servlet y portlet Define un fragmento que el padre no coloca en memoria caché ni consume.
<cache-entry>
...
<property name="do-not-cache">true</property>
o bien
<cache-id>
<property name="do-not-cache">true</property>
</cache-id>
</cache-entry>
cache-id
Para colocar un objeto en memoria caché, el servidor de aplicaciones debe saber cómo generar un ID único para las distintas invocaciones de ese objeto. Estos ID se crean a partir del código Java personalizado escrito por el usuario o a partir de las reglas definidas en la política de memoria caché de cada entrada de memoria caché. Cada entrada de memoria caché puede tener varias reglas de ID de memoria caché que se ejecutan en orden hasta que:
  • Una norma devuelve un ID de memoria caché que no está vacío, o
  • No hay más reglas para ejecutar.
Si ninguna de las normas de generación de ID de memoria caché produce un ID de memoria caché válido, el objeto no se coloca en la memoria caché.
Cada elemento cache-id define una norma para colocar en memoria caché un objeto y se compone de los subelementos component, timeout, inactivity, priority, property, idgenerator y metadatagenerator. En el ejemplo siguiente se muestra un elemento cache-id:
<cache-id>
   component*| timeout? | inactivity? | priority? | property* | idgenerator? | metadatagenerator?
</cache-id>
Subelemento component

Utilice el subelemento component para generar una parte del ID de memoria caché. El subelemento component está formado por los atributos id, types e ignore-value y los elementos index, method, field, required, value y not-value.

  • Utilice el atributo id para identificar el componente.
  • Utilice el atributo type para identificar el tipo de componente. En la siguiente tabla se muestran los valores de type.
    Avoid trouble Avoid trouble: Cuando se especifica el subelemento de componente de parámetro en el archivo cachespec.xml, el contenedor web establece la codificación de caracteres en base al valor de codificación que se obtiene del objeto de solicitud. Si, después, un servlet invoca el método setCharacterEncoding, este método no tiene ningún efecto porque la codificación de caracteres no se puede cambiar una vez ya se ha definido.gotcha
    Tabla 3. Valores de tipos. Clases y significado válidos de los tipos.
    Tipo Clases válidas Significado
    method Mandato Llama al método indicado en el objeto o mandato
    field Mandato Recupera el campo nombrado del objeto o mandato
    parameter Servlet y portlet Recupera el valor del parámetro nombrado del objeto de la solicitud
    parameter-list Servlet y portlet Recupera una lista de valores para el parámetro denominado
    Avoid trouble Avoid trouble: La memoria caché toma los valores de todos los parámetros con este nombre y utiliza todos estos valores, en el orden en que se han tomado, para crear el ID de memoria caché gotcha
    sesión Servlet y portlet Recupera el valor nombrado de la sesión HTTP
    cookie Servlet Recupera el valor de cookie nombrado
    attribute Servlet y portlet Recupera el atributo nombrado de la solicitud
    cabecera Servlet, servicio web y portlet Recupera la cabecera nombrada de la solicitud
    pathInfo Servlet Recupera el elemento pathInfo de la solicitud
    servletpath Servlet Recupera la vía de acceso del servlet
    locale Servlet y portlet Recupera el entorno nacional de la solicitud
    Atención: El componente locale sólo es apto para entradas edgecacheable, si se utiliza RRD. El componente locale no es válido para todas las demás versiones ESI.
    requestType Servlet y portlet Recupera el método request HTTP de la solicitud.
    Atención: El componente requestType sólo es apto para entradas edgecacheable, si se utiliza RRD. El componente requestType no es válido para todas las demás versiones ESI.
    tiles_attribute Servlet y portlet Recupera el valor de un atributo de un mosaico.
    SOAPEnvelope Servicio web y memoria caché del cliente de servicios web Recupera el elemento SOAPEnvelope de una solicitud de servicios web. Si el ID de atributo es Hash se utilizarán totales de control del elemento SOAPEnvelope y si es Literal se utilizará el elemento SOAPEnvelope tal y como se ha recibido.
    SOAPAction Servicio Web Recupera la cabecera SOAPAction, si está disponible, para una solicitud de servicios web.
    serviceOperation Servicio Web Recupera la operación de servicio para una solicitud de servicios web
    serviceOperationParameter Servicio Web Recupera el parámetro especificado de una solicitud de servicios web
    operación Memoria caché del cliente de servicios Web Indica un tipo de operación del archivo WSDL (Web Services Description Language). El atributo id se ignora y el valor es el nombre de operación o de método. Si se especifica el espacio de nombres de la operación, de formato al valor como namespaceOfOperation:nameOfOperation.
    part Memoria caché del cliente de servicios Web Indica una parte del mensaje de entrada del archivo WSDL o un parámetro de solicitud. El atributo id es el nombre de la parte o del parámetro, y el valor es el valor de la parte o del parámetro.
    SOAPHeaderEntry Memoria caché del cliente de servicios Web Recupera información especial en la cabecera SOAP (Simple Object Access Protocol) de la solicitud de servicios web. El atributo id especifica el nombre de la entrada. Asimismo, la entrada de la cabecera SOAP en la solicitud SOAP debe tener el atributo actor, que contiene com.ibm.websphere.cache. Por ejemplo:
    <soapenv:Header>
    	<getQuote soapenv:actor="com.ibm.websphere.cache">IBM</getQuote>
    </soapenv:Header>
    portletSession Portlet Recupera el valor nombrado de la sesión de portlet
    portletWindowId Portlet Recupera el ID de ventana de portlet del objeto de la solicitud de portlet
    portletMode Portlet Recupera la modalidad de portlet del objeto de la solicitud de portlet
    portletWindowsState Portlet Recupera el estado de ventana de portlet del objeto de la solicitud de portlet
    sessionID Servlet y portlet Recupera el ID de la sesión HTTP
  • Utilice el atributo ignore-value para especificar si debe utilizarse o no el valor que devuelva este componente para crear el ID de memoria caché. Este atributo es opcional con un valor predeterminado igual a false. Si el valor es true, solamente debe utilizarse el ID de componente cuando se cree un ID de memoria caché o no se utilizará ninguna salida cuando se cree un ID de invalidación o dependencia.
  • Utilice el elemento method para llamar a un método void en un objeto devuelto. Puede anidar infinitamente los objetos method y field en la combinación que desee. El método debe ser public y no es válido para componentes que se pueden almacenar en la memoria caché Edge. Por ejemplo:
    <component id="getUser" type="method"><method>getUserInfo
    <method>getName</method></method></component>

    Este método es equivalente a getUser().getUserInfo().getName()

    Para atributos, métodos o campos de tipos de componente que pueden devolver objetos, cuando el objeto devuelto es una colección o una matriz, el ID se crea con una lista separada por comas de los elementos de la colección o la matriz. Por ejemplo, si el atributo users de la solicitud devuelve una matriz [a, b] y la entrada de memoria caché se define como el ejemplo siguiente:
    <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>
    El ID de antememoria contiene la serie users: a,b. El ID de dependencia es dep: a,b.
    Utilice el atributo multipleIDs con los tipos de componente para especificar y generar varios ID de dependencia (o los ID de invalidación) basándose en los elementos de la colección o la matriz. Por ejemplo:
    <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>
    La política de memoria caché generará los ID de dependencia siguientes:
    • dep:a,b
    • dep:a
    • dep:b
    Utilice el elemento index con el tipo de componente anterior para añadir sólo el valor del elemento en la posición del índice especificada en el colección o la matriz, con el ID que se va a crear.
    <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>
    La política de memoria caché anterior genera el componente siguiente que se va a utilizar en el ID de memoria caché: users: b. Utilice el elemento <method> para llamar a un método void en un objeto devuelto.
  • Utilice el elemento field para acceder a un campo de un objeto devuelto. Puede anidar infinitamente los objetos method y field en la combinación que desee. El campo debe ser public. Este campo no es válido para componentes que se pueden almacenar en la memoria caché Edge. Por ejemplo:
    <component id="getUser" type="method"><method>getUserInfo
    <field>name</field></method></component>

    Este método es equivalente al método getUser().getUserInfo().name.

  • Utilice el elemento required para especificar si este componente debe devolver o no un valor que no sea nulo para que este ID de memoria caché represente una memoria caché válida. Si se establece como true, este componente debe devolver un valor que no sea nulo para que este ID de memoria caché represente un ID de memoria caché válido. Si se establece como false, se utiliza un valor que no sea nulo (el valor predeterminado) para crear el ID de memoria caché, y un valor nulo significa que no se utilizará este componente para nada en la creación del ID. Por ejemplo:
    <required>true</required>
  • Utilice el elemento value para especificar valores que deben coincidir para utilizar este componente en la creación del ID de memoria caché. Por ejemplo:
    <component id="getUser" type="method"><value>blue</value> 
    <value>red</value> </component>
  • Utilice el elemento not-value para especificar valores que no deben coincidir para utilizar este componente en la creación del ID de memoria caché. Este método es parecido al elemento value, pero prohíbe la colocación en memoria caché de los valores definidos. Puede utilizar varios elemento not-value cuando existen más de un valor que no es válido. Por ejemplo:
    <component id="getUser" type="method">
    <required>true</required>
    <not-value>blue</not-value>
    <not-value>red</not-value></component>
El subelemento component puede tener un elemento method y un elemento field, value o not-value. Los elementos method y field sólo se aplican a los mandatos. En el ejemplo siguiente se muestran los atributos del subelemento component:
<component id="isValid" type="method" ignore-value="true"><component>
Subelemento timeout
El subelemento timeout se utiliza para especificar un valor absoluto de tiempo de vida (TTL) de la entrada de memoria caché. Por ejemplo,
<timeout>valor</timeout>

donde valor es la cantidad de tiempo, en segundos, que se debe mantener la entrada de memoria caché. Las entradas de memoria caché que están en la memoria se guardan indefinidamente, siempre y cuando las entradas permanezcan en la memoria. Las entradas de memoria caché que se almacenan en disco se desalojan si no se acceda a ellas durante 24 horas.

Subelemento inactivity
El subelemento inactivity se utiliza para especificar un valor de tiempo de vida (TTL) de la entrada de memoria caché basándose en la última vez que se ha accedido a la entrada de memoria caché. Es un subelemento del elemento cache-id.
<inactivity>valor</inactivity>
donde valor es la cantidad de tiempo, en segundos, que se debe mantener la entrada de memoria caché después de la última coincidencia de memoria caché.
Subelemento priority
Utilice el subelemento priority para especificar la prioridad de una entrada de memoria caché en la memoria caché. La ponderación de la prioridad es utilizada por el algoritmo de menos utilizadas recientemente (LRU) de la memoria caché, para decidir qué entradas se eliminan de la memoria caché si ésta se queda si espacio de almacenamiento. Por ejemplo,
<priority>valor</priority>

donde valor es un entero positivo entre 1 y 16 inclusive.

Ejemplos
El ejemplo siguiente mantiene la entrada de memoria caché en la memoria caché durante un mínimo de 35 segundos y un máximo de 180 segundos. Si se accede a la entrada de memoria caché dentro de cada período de inactividad de 35 segundos, el período de inactividad se amplía por otros 35 segundos. No obstante, dado que también se configura el elemento timeout, la entrada de memoria caché siempre se invalida después de 180 segundos. Si no se accede a la entrada de memoria caché dentro de un período de 35 segundos, se elimina de memoria caché la entrada.
<cache-id>
	<component id="timeout" type="parameter">
		<required>true</required>
	</component>
	<timeout>180</timeout>
	<inactivity>35</inactivity>
	<priority>1</priority>
</cache-id>
El ejemplo siguiente mantiene la entrada de memoria caché en la memoria caché durante un mínimo de 600 segundos. Si se accede a la entrada de memoria caché dentro de cada segundo período de 600 segundos, el período de inactividad se amplía por otros 600 segundos. Si no se accede a la entrada de memoria caché dentro de un período de 600 segundos, se elimina de memoria caché la entrada de memoria caché.
<cache-id>
	<component id="timeout" type="parameter">
		<required>true</required>
	</component>
	<inactivity>600</inactivity>
	<priority>1</priority>
</cache-id>
En el ejemplo siguiente, el valor de inactividad no tiene significado porque el período de tiempo de espera es menor que el período de inactividad. La entrada de memoria caché siempre se invalida después de 180 segundos independientemente de la frecuencia con la que se accede a la entrada de memoria caché.
<cache-id>
	<component id="timeout" type="parameter">
		<required>true</required>
	</component>
	<timeout>180</timeout>
	<inactivity>600</inactivity>
	<priority>1</priority>
</cache-id>
Subelemento property
Utilice el subelemento property para especificar propiedades genéricas de la entrada de memoria caché. Por ejemplo,
<property name="key">valor</property>

donde clave es el nombre de la propiedad que se está definiendo, y valor es el valor correspondiente.

Por ejemplo:
<property name="description">The Snoop Servlet</property>
Tabla 4. Valores de subelemento de propiedad.. Clases y significado válidos de la propiedad.
Propiedad Clases válidas Significado
sharing-policy/timeout/priority Todos Altera temporalmente los valores de la entrada de memoria caché que contiene cuando la solicitud coincide con este ID de memoria caché.
EdgeCacheable Servlet Altera temporalmente los valores de la entrada de memoria caché que contiene cuando la solicitud coincide con este ID de memoria caché.

Subelementos idgenerator y metadatagenerator

Utilice el elemento idgenerator para especificar el nombre de clase cargado para la generación del ID de memoria caché. El elemento IdGenerator debe implementar la interfaz com.ibm.websphere.servlet.cache.IdGenerator para servlets o la interfaz com.ibm.websphere.webservices.IdGenerator para la memoria caché del cliente de servicios web. A continuación se muestra un ejemplo del elemento idgenerator:
<idgenerator> nombre de clase </idgenerator>
Donde nombre de clase es el nombre plenamente cualificado de la clase que se va a utilizar. Defina esta clase generator en una biblioteca compartida.
Utilice el elemento metadatagenerator dentro del elemento cache-id para especificar el nombre de clase cargado para la generación de metadatos. La clase MetadataGenerator debe implementar la interfaz com.ibm.websphere.servlet.cache.MetaDataGenerator para un servlet o la interfaz com.ibm.websphere.cache.webservices.MetaDataGenerator para una memoria caché de cliente de servicios web. La clase Metadatagenerator define propiedades como, por ejemplo, timeout, inactivity, propiedades de almacenamiento en memoria caché externa o las dependencias. A continuación se muestra un ejemplo del elemento metadatagenerator:
<metadatagenerator> nombre de clase </metadatagenerator>
En este ejemplo, el nombre de clase es el nombre plenamente cualificado de la clase que se va a utilizar. Defina esta clase generator en una biblioteca compartida.

Elemento dependency-id

Utilice el elemento dependency-id para especificar identificadores de memoria caché adicionales que asocian varias entradas de memoria caché al mismo identificador de grupo.

El valor del elemento dependency-id se genera concatenando la serie base de identificador de dependencia con los valores devueltos por sus elementos componentes. Si un componente necesario devuelve un valor nulo, no se genera la dependencia completa y no se utiliza. Valide los identificadores de dependencia mediante la API de memoria caché dinámica o utilice el elemento invalidation. Pueden existir varias normas de identificación de dependencia en un elemento cache-entry. Todas las normas de dependencia se ejecutan por separado.

Elemento invalidation

Para invalidar objetos colocados en memoria caché, el servidor de aplicaciones debe generar los ID de invalidación únicos. Genere los ID de invalidación escribiendo código Java personalizado o a través de reglas definidas en la política de memoria caché de cada entrada de memoria caché. El ejemplo siguiente ilustra una invalidación en la política de memoria caché:
<invalidation>component* | invalidationgenerator? </invalidation>

Subelemento invalidationgenerator

El elemento invalidationgenerator se utiliza únicamente con la memoria caché del cliente de servicios web. Utilice el elemento invalidationgenerator para especificar el nombre de clase que se va a cargar para generar los ID de invalidación. La clase InvalidationGenerator debe implementar la interfaz com.ibm.websphere.cache.webservices.InvalidationGenerator. A continuación figura un ejemplo del elemento invalidationgenerator:
<invalidationgenerator>nombre de clase</invalidationgenerator>
En este ejemplo, el nombre de clase es el nombre plenamente cualificado de la clase que implementa la interfaz com.ibm.websphere.cache.webservices.InvalidationGenerator. Defina esta clase generator en una biblioteca compartida.

Ejemplo de un archivo 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> 


	<!--Probar ESI con carácter comodín-->
	<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">
				Este es el servlet SOAP.
			</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> 





	<!-- Entradas de prueba de CacheMonitor CachePolicies -->
	<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>


		<!-- especificaciones válidas, se almacenarán en memoria caché si coinciden -->
		<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>

		<!-- especificaciones válidas, se almacenarán en memoria caché si coinciden -->
		<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>

		<!-- Nota: dado que las jsps hijo no tienen su propia
			entrada de memoria caché, no se deben almacenar nunca en memoria caché,
			sólo como parte del resultado de padre dependiente de esta configuración -->
		<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>

Icon that indicates the type of topic Reference topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rdyn_cachespec
File name: rdyn_cachespec.html