Fichier cachespec.xml

Le cache analyse le fichier cachespec.xml au démarrage du serveur, puis extrait de chaque élément cache-entry un ensemble de paramètres de configuration. Chaque fois qu'un nouveau servlet ou un autre objet mémorisable est initialisé, le cache tente de faire correspondre chacun des éléments cache-entry pour rechercher les informations de configuration associées à cet objet.

Les éléments cache-entry peuvent se trouver dans l'élément cache racine ou dans un élément cache-instance. Les entrées de cache qui se trouvent dans l'élément root sont mises en cache avec l'instance de cache par défaut. Les entrées de cache qui se trouvent dans l'élément <cache-instance> sont mises en cache dans cette instance de cache spécifique. Des objets mémorisables différents possèdent des éléments class différents. Pour définir l'objet particulier auquel une règle de cache fait référence, utilisez l'élément name.

Emplacement

Placez le fichier cachespec.xml dans le module de déploiement. Utilisez l'outil d'assemblage pour définir les objets mémorisables. Voir les rubriques relatives à l'assemblage d'applications. Vous pouvez également placer un fichier cachespec.xml global dans le répertoire des propriétés du serveur d'applications. Lorsque le répertoire de propriétés du serveur d'applications contient un fichier cachespec.xml global et qu'une application contient un fichier cachespec.xml, les entrées des deux fichiers cachespec.xml sont fusionnées. Si des entrées des deux fichiers sont conflictuelles, les entrées du fichier cachespec.xml se trouvant dans l'application remplacent celles du fichier cachespec.xml global de cette application.

Le fichier cachespec.dtd est disponible dans le répertoire des propriétés du serveur d'applications. Le fichier cachespec.dtd définit la structure légale et les éléments que votre fichier cachespec.xml peut contenir.

Remarques d'utilisation

Eléments Cachespec.xml
L'élément racine du fichier cachespec.xml est cache, lequel contient des éléments cache-instance et cache-entry. Les éléments cache-entry peuvent également être placés à l'intérieur d'éléments cache-instance de façon à ce que l'entrée de cache fasse partie d'une instance de cache autre que l'instance par défaut.
cache-instance
<cache-instance name="cache_instance_name"></cache-instance>

L'attribut de nom correspond au nom JNDI (Java™ Naming and Directory Interface) de l'instance de cache qui est défini dans la console d'administration.

Chaque élément cache-instance doit contenir au moins un élément cache-entry. Une entrée de cache qui est mise en correspondance dans un élément cache-instance est mise en cache dans l'instance de cache du servlet qui est spécifiée par l'attribut de nom. Si des éléments cache-entry identiques existent dans les éléments cache-instance, alors le premier élément cache-entry concordant est utilisé.

cache-entry
Chaque entrée de cache doit indiquer des informations de base nécessaires à son traitement par le cache dynamique. La présente section explique la fonction de chaque élément du fichier cachespec.xml, notamment :
  • class
  • name
  • sharing-policy
  • skip-cache
  • propriété
  • cache-id

La dernière version de WebSphere Application Server permet de définir plusieurs règles de cache pour un servlet unique. Par exemple, si vous définissez plusieurs mappages pour un servlet dans le fichier web.xml, vous pouvez créer une entrée de cache pour chaque mappage.

class

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

Cet élément obligatoire détermine la façon dont le serveur d'applications interprète la définition de règle cache restante. La valeur servlet désigne les servlets et les fichiers JSP (JavaServer Pages) déployés dans le moteur de servlet de WebSphere Application Server. La classe webservice permet l'extension du servlet avec des types de composant particuliers pour les requêtes de services Web. JAXRPCClient permet de définir une entrée de cache pour le cache du client des services Web. La valeur command fait référence à des classes utilisant le modèle de programmation de commande WebSphere Application Server. La valeur static fait référence aux fichiers qui stockent le contenu statique. Les exemples suivants illustrent l'utilisation de l'élément class : :

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

<name>name</name>

Suivez les instructions relatives à l'élément name ci-après pour spécifier un objet pouvant être mis en cache.
  • Pour les commandes, cet élément obligatoire doit inclure le nom de package, s'il existe, et le nom de classe, y compris la mention .\class à la fin de l'objet configuré.
    Important : Si vous demandez la mise en antémémoire des commandes dans le fichier cachespec.xml et que la mise en antémémoire des servlets n'est pas activée dans le serveur d'applications sur lequel s'exécute l'application, une erreur se produit. Le serveur d'applications va tenter d'obtenir une instance du cache. Pour éliminer l'erreur, activez la mise en antémémoire des servlets.
  • Pour les servlets et les fichiers JSP, si le fichier cachespec.xml se trouve dans le répertoire des propriétés WebSphere Application Server, cet élément obligatoire doit inclure l'URI complet du fichier JSP ou du servlet à mettre en cache. Pour les servlets et les fichiers JSP, si le fichier cachespec.xml se trouve dans l'application Web, cet élément obligatoire peut occuper un emplacement relatif à la racine du contexte de cette application Web.
  • Pour les services Web, il faut inclure l'URI du routeur SOAP (Simple Object Access Protocol) associé au service Web à placer en cache.
  • Pour le cache du client de services Web, le nom correspond au point de contact cible du service Web pouvant être mis en cache ou à l'URI du routeur SOAP associé au service Web pouvant être mis en cache. Pour définir le nom du cache du client des services Web, vous pouvez utiliser l'emplacement de l'adresse SOAP spécifié dans le fichier WSDL (Web Services Description Language).
  • Pour les fichiers statiques, si le fichier cachespec.xml se trouve dans le répertoire des propriétés WebSphere Application Server, cet élément obligatoire doit inclure l'URI complet du fichier à mettre en cache. Si le fichier cachespecm.xml se trouve dans l'application Web, cet élément obligatoire peut occuper un emplacement relatif à la racine du contexte de cette application. Pour une application Web ayant une racine de contexte, la règle de cache s'appliquant aux fichiers utilisant la classe statique doit être spécifiée dans l'application Web, et pas dans le répertoire de propriétés.
  • Pour les portlets, si le fichier cachespec.xml se trouve dans le répertoire des propriétés WebSphere Application Server, cet élément obligatoire doit inclure le chemin de contexte complet et le nom du portlet à mettre en cache. Si le fichier cachespec.xml se trouve dans l'application Web, cet élément obligatoire est le nom de portlet relatif à la racine du contexte de cette application Web.
Conseil : L'application Web est l'emplacement préféré du fichier cachespec.xml.

Vous pouvez indiquer plusieurs éléments name dans un cache-entry si plusieurs mappages font référence au même servlet.

Les exemples suivants illustrent l'utilisation de l'élément 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>

Dans un cluster doté d'un cache réparti, ces valeurs déterminent les caractéristiques de partage des entrées créées à partir de cet objet. En l'absence de cet élément, une valeur not-shared est utilisée.[AIX Solaris HP-UX Linux Windows] Dans les environnement à serveur unique, not-shared est la seule valeur valide. [z/OS]Sur la plateforme z/OS, vous pouvez activer la réplication entre les processus servant dans un serveur d'applications de base à l'aide des propriétés personnalisées JVM (Java Virtual Machine) DynacacheEnableUnmanagedServerReplication et DynacacheUnmanagedServerReplicationType. Lorsque vous activez une réplication, la valeur par défaut est not-shared. Cette propriété n'a pas d'incidence sur la distribution vers les processeurs Edge Side Include via la propriété de mise en cache de fragments Edge.

[AIX Solaris HP-UX Linux Windows][z/OS]Pour plus d'informations, voir l'article relatif à la configuration de la réplication du cache.

Tableau 1. Valeurs des règles de partage. Valeurs et description des règles de partage.
valeur Description
not-shared Les entrées de cache de cet objet ne sont pas partagées entre des serveurs d'applications différents. Ces entrées peuvent contenir des données non sérialisables. Par exemple, un servlet mis en cache peut placer des objets non sérialisables dans les attributs de requête, si le type <class> le permet.
Eviter les incidents Eviter les incidents: Le serveur d'applications réplique toujours les entrées d'invalidation. Celles-ci ne sont pas concernées par la règle de partage.gotcha
shared-push Les entrées de cache de cet objet sont automatiquement distribuées aux mémoires cache dynamiques des autres serveurs d'applications ou des machines JVM (Java virtual machine) associées. Chaque cache possède une copie de l'entrée au moment de sa création. Ces entrées ne peuvent pas stocker de données non sérialisables.
shared-pull Les entrées de cache de cet objet sont partagées entre des serveurs d'applications, à la demande. Si un serveur d'applications reçoit un échec de cache pour cet objet, il interroge les serveurs d'applications associés pour vérifier s'ils possèdent l'objet. Si aucun serveur d'applications ne possède une copie mise en cache de l'objet, le serveur d'applications d'origine exécute la requête et génère l'objet. Ces entrées ne peuvent pas stocker de données non sérialisables. Ce mode de partage est déconseillé.
shared-push-pull Les entrées de cache de cet objet sont partagées entre des serveurs d'applications, à la demande. Lorsqu'un serveur d'applications génère une entrée de cache, il diffuse l'ID cache de l'entrée créée à tous les serveurs d'applications associés. Chaque serveur détermine ensuite si une entrée existe pour un ID cache donné. Au niveau d'une requête donnée de cette entrée, le serveur d'applications sait si l'entrée doit être générée ou si elle doit être extraite d'un autre emplacement. Ces entrées ne peuvent pas stocker de données non sérialisables.
L'exemple suivant présente une règle de partage :
<sharing-policy>not-shared</sharing-policy>
skip-cache
Prend le nom d'un attribut de requête qui, s'il est présent dans le contexte de requête, dicte que la réponse ne peut pas être extraite de l'instance de cache spécifiée. Cette propriété permet de prévisualiser le contenu dans les systèmes de production et de vérifier que l'application fonctionne correctement.
<cache>
	<skip-cache-attribute>att1</skip-cache-attribute>	<!–Applies only to the base cache- ->
...
<cache-instance name="instance1">
<skip-cache-attribute>att2</skip-cache-attribute> <!-Applies only to this instance- ->
...
</cache-instance>
</cache>
propriété

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

clé est le nom de la propriété de cet élément d'entrée de cache, et valeur est la valeur correspondante.

Vous pouvez définir des propriétés facultatives au niveau d'un objet pouvant être mis en cache, par exemple, une description du servlet configuré. La classe détermine les propriétés valides de l'entrée de cache. A ce stade, les propriétés suivantes sont définies :

Tableau 2. Valeurs de propriété. Valeurs de propriété et classes valides.
Propriété Classes valides valeur
ApplicationName Toutes Remplace l'ID de l'application JavaEEName, de sorte que plusieurs applications puissent partager un espace nom d'ID cache commun.
EdgeCacheable Servlet True ou false. La valeur par défaut est false. Si la propriété a pour valeur true, le servlet ou le fichier JSP est demandé en externe à un processeur Edge Side Include. Le fait que le servlet ou le fichier JSP puisse être stocké ou non en cache est fonction du reste de la spécification de cache.

Les éléments autorisés pour les entrées générales du cache edgecacheable sont PARAMETER, HEADER, COOKIE et PATH_INFOSERVLET_PATH.

ExternalCache Servlet et portlet Indique le nom de cache externe. Ce nom doit correspondre au nom du groupe de caches externes.
consume-subfragments Servlet, service Web ou portlet True ou false. La valeur par défaut est false. Lorsqu'un servlet est mis en cache, seul son contenu est stocké et celui-ci inclut des signets pour d'autres fragments vers lesquels il effectue des inclusions ou des acheminements. Consume-subfragments (CSF) indique au cache de ne pas arrêter de sauvegarder le contenu lors de l'inclusion d'un servlet enfant. L'entrée parent, celle marquée CSF, contient tout le contenu de tous les fragments compris dans son entrée de cache, formant ainsi une seule grosse entrée de cache ne comprenant ni inclusions, ni acheminements mais le contenu de l'arborescence complète des entrées. CSF (Consume-subfragments) peut limiter sensiblement les traitements à effectuer par le serveur d'applications mais sert habituellement uniquement lorsque la demande HTTP externe contient toutes les données nécessaires pour déterminer l'arborescence complète des fragments inclus.
Utilisez l'élément <exclude> pour indiquer au cache d'arrêter la consommation pour le fragment exclu, et de créer à la place une marque de réservation pour l'inclusion ou le défilement vers l'avant. Par exemple, excluez A.jsp de consume-subfragment comme suit :
<property name="consume-sbufragments">true
<exclude>/A.jsp<exclude>
</property>
do-not-consume Servlet, service Web ou portlet True ou false. La valeur par défaut est false. Lorsque la propriété consume-subfragment est définie sur true pour un fragment parent, le contenu du fragment enfant est enregistré dans l'entrée de cache du parent. La propriété Do-not-consume (DNC) indique au cache d'arrêter d'enregistrer le contenu de ce fragment dans l'entrée de cache du parent et de créer à la place une marque de réservation pour l'inclusion ou le défilement vers l'avant.
alternate_url Servlet Indique l'URL utilisée pour invoquer le servlet ou le fichier JSP. La propriété n'est correcte que si la propriété EdgeCacheable est également définie pour l'entrée de cache.
persist-to-disk Toutes True ou false. La valeur par défaut est true. Quand cette propriété est définie sur false, l'entrée de cache n'est pas écrite sur le disque en cas de dépassement ou d'arrêt du serveur.
save-attributes Servlet et portlet True ou false. La valeur par défaut est true. Quand cette propriété est définie sur false, les attributs de la requête ne sont pas enregistrés dans l'entrée de cache.
Utilisez l'élément <exclude> pour spécifier les attributs de requête qui ne s'appliquent pas à la propriété save-attributes. Par exemple, vous enregistrez uniquement l'attribut attr1 avec l'entrée de cache :
<property name=
  "save-attributes">false
<exclude>attr1</exclude>
</property>

Pour enregistrer tous les attributs à l'exception de l'attribut attr1 dans l'entrée de cache, définissez la propriété sur true dans l'exemple précédent. Si vous n'utilisez pas l'élément <exclude>, soit l'ensemble des attributs de requête sont enregistrés avec l'entrée de cache, soit aucun d'eux ne l'est.

delay-invalidations Commande True ou false. Lorsque cette propriété a pour valeur true, les commandes qui invalident les objets mis en cache en fonction des règles d'invalidation de cette entrée de cache invalident les entrées de cache après l'exécution. Par défaut, l'invalidation se produit avant que la commande ne s'exécute.
store-cookies Servlet et portlet On ou off. La valeur par défaut est On. Cette propriété utilise un ou plusieurs noms de cookies pour son argument qui est enregistré avec l'objet de cache et restauré par le cache de servlet dans la réponse avec un en-tête set-cookie.
Enregistrez tous les cookies excepté cookie1, comme élément de cache-entry comme suit :
<property name="store-cookies">true
<exclude>cookie</exclude>
</property>
Enregistrez seulement cookie1, comme élément de cache-entry comme suit :
<property name="store-cookies">false
<exclude><cookie1</exclude>
</property>
ignore-get-post Servlet et portlet True ou false. La valeur par défaut est false. Lorsque la propriété est définie sur true, le type de requête n'est pas ajouté à cache-id pour les requêtes GET et POST, sauf si le sous-élément du composant requestType est défini. Par défaut, le type de requête est automatiquement ajouté à cache-id pour les requêtes GET et POST.
ignore-char-encoding Servlet et portlet True ou false. La valeur par défaut est false. Si la propriété a la valeur true, le codage de caractères UTF-8 n'est pas ajouté à l'ID de cache. Si le codage de caractères UTF-8 est ajouté à l'ID de cache, vous risquez d'obtenir plusieurs copies des fragments, ce qui augmentera inutilement la taille de la mémoire cache.
do-not-cache Servlet et portlet Définit un fragment qui est ni mis en cache, ni consommé par son parent.
<cache-entry>
...
<property name="do-not-cache">true</property>
or
<cache-id>
<property name="do-not-cache">true</property>
</cache-id>
</cache-entry>
cache-id
Pour mettre un objet en cache, le serveur d'applications doit savoir comment générer un ID unique pour les différents appels de cet objet. Ces ID sont créés à partir de code Java personnalisé ou de règles définies dans la règle de cache de chaque entrée de cache. Chaque entrée de cache peut comporter plusieurs règles d'ID de cache qui sont exécutées séquentiellement jusqu'à ce que :
  • une règle renvoie un ID de cache non vide, ou que
  • Il ne reste plus aucune règle à exécuter.
Si aucune règle de génération d'ID cache ne donne lieu à un ID cache valide, l'objet n'est pas mis en cache.
Chaque élément cache-id définit une règle pour la mise en cache de cet objet et est constitué des sous-éléments component, timeout, inactivity, priority, property, idgenerator et metadatagenerator. L'exemple suivant illustre l'utilisation d'un élément cache-id :
<cache-id>
   component*| timeout? | inactivity? | priority? | property* | idgenerator? | metadatagenerator?
</cache-id>
sous-élément component

Le sous-élément component permet de générer une partie de l'ID cache. Le sous-élément component comporte les attributs id, type et ignore-value, ainsi que les éléments index, method, field, required, value et not-value.

  • Utilisez l'attribut id pour identifier le composant.
  • Utilisez l'attribut type pour identifier le type du composant. Le tableau suivant répertorie les valeurs autorisées pour le type :
    Eviter les incidents Eviter les incidents: Lorsque le sous-élément du composant de paramètre est défini dans le fichier cachespec.xml, le conteneur Web définit le codage des caractères en fonction du paramètre de codage obtenu de l'objet de demande. Si un servlet appelle ensuite la méthode setCharacterEncoding, cette dernière n'a aucun effet, car le codage des caractères ne peut pas être changé une fois qu'il a été défini.gotcha
    Tableau 3. Valeurs de type. Classes valides de type et signification.
    Type Classes valides Signification
    méthode Commande Appelle la méthode indiquée au niveau de la commande ou de l'objet
    field Commande Extrait la zone nommée de la commande ou de l'objet
    parameter Servlet et portlet Extrait la valeur du paramètre nommé à partir de l'objet requête
    parameter-list Servlet et portlet Extrait une liste de valeurs pour le paramètre nommé
    Eviter les incidents Eviter les incidents: La mémoire cache obtient les valeurs de tous les paramètres portant ce nom et utilise toutes ces valeurs, dans l'ordre de leur obtention, pour créer l'ID de cache gotcha
    session Servlet et portlet Extrait la valeur nommée à partir de la session HTTP
    cookie Servlet Extrait la valeur de cookie nommée
    attribute Servlet et portlet Extrait l'attribut de requête nommé
    header Servlet, service Web et portlet Extrait l'en-tête de requête nommé
    pathInfo Servlet Extrait l'élément pathInfo de la requête
    servletpath Servlet Extrait le chemin du servlet
    locale Servlet et portlet Extrait les paramètres régionaux de la requête
    Avertissement : L'élément "locale" est autorisé uniquement pour les entrées du cache edgecacheable avec RRD. L'élément "locale" n'est pas admis pour les autres versions d'ESI.
    requestType Servlet et portlet Extrait la méthode de demande HTTP à partir de la requête.
    Avertissement : L'élément "requestType" est autorisé uniquement pour les entrées du cache edgecacheable avec RRD. L'élément "requestType" n'est pas admis pour les autres versions d'ESI.
    tiles_attribute Servlet et portlet Extrait la valeur d'un attribut à partir d'une mosaïque.
    SOAPEnvelope Service Web et cache du client des services Web Extrait l'élément SOAPEnvelope d'une requête de services Web. Un attribut id de hachage utilise un hachage du SOAPEnvelope, alors qu'un ID littéral utilise le SOAPEnvelope tel qu'il est reçu.
    SOAPAction Service Web Extrait l'en-tête SOAPAction (si celui-ci est disponible) pour une requête de services Web
    serviceOperation Service Web Extrait l'opération de maintenance d'une requête de service Web
    serviceOperationParameter Service Web Extrait le paramètre spécifié d'une demande de services Web
    operation Cache du client de services Web Indique un type d'opération du fichier WSDL (Web Services Description Language). L'attribut id n'est pas pris en compte et la valeur correspond au nom de l'opération ou de la méthode. Si l'espace de nom de l'opération est indiqué, la valeur doit être formatée de la façon suivante : EspaceNomOperation:NomOpération.
    part Cache du client de services Web Indique une partie du message d'entrée dans le fichier WSDL ou un paramètre de requête. Son attribut id est le nom de la partie ou du paramètre et la valeur est celle de la partie ou du paramètre.
    SOAPHeaderEntry Cache du client de services Web Récupère des informations spéciales dans l'en-tête SOAP (Simple Object Access Protocol) de la demande de services Web. L'attribut id indique le nom de l'entrée. En outre, l'entrée de l'en-tête SOAP de la requête de même nom doit posséder un attribut actor contenant com.ibm.websphere.cache. Par exemple :
    <soapenv:Header>
    	<getQuote soapenv:actor="com.ibm.websphere.cache">IBM</getQuote>
    </soapenv:Header>
    portletSession Portlet Extrait la valeur nommée à partir de la session de portlet
    portletWindowId Portlet Extrait l'ID fenêtre du portlet à partir de l'objet requête du portlet
    portletMode Portlet Extrait le mode du portlet à partir de l'objet requête du portlet
    portletWindowsState Portlet Extrait l'état de la fenêtre du portlet à partir de l'objet requête du portlet
    sessionID Servlet et portlet Extrait l'ID de la session HTTP
  • L'attribut ignore-value permet d'indiquer si vous devez utiliser ou non la valeur renvoyée par ce composant dans la formation d'ID cache. Cet attribut est facultatif avec false comme valeur par défaut. Si la valeur est true, seul l'ID du composant est utilisé lors de la création d'un ID cache ou aucune sortie n'est utilisée lors de la création d'un ID de dépendance ou d'invalidation.
  • L'élément method sert à appeler une méthode vide au niveau d'un objet renvoyé. Vous pouvez imbriquer des objets method et des objets field indéfiniment dans n'importe quelle combinaison. La méthode doit être publique et n'est pas applicable aux composants edge-cacheable. Exemple :
    <component id="getUser" type="method"><method>getUserInfo
    <method>getName</method></method></component>

    Equivalent à getUser().getUserInfo().getName()

    Pour les types de composant attribute, method ou field pouvant renvoyer un objet, lorsque l'objet renvoyé est une collection ou un tableau, l'ID est créé avec une liste des éléments de la collection ou du tableau séparés par des virgules. Par exemple, si l'attribut de requête users renvoie un tableau [a, b] et que l'entrée de cache est définie comme suit :
    <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>
    L'ID de cache contient la chaîne users: a,b. L'ID de dépendance est dep: a,b.
    Utilisez l'attribut multipleIDs avec les types de composant pour spécifier et générer plusieurs ID de dépendance (ou ID d'invalidation) en fonction des éléments de la collection ou du tableau. Par exemple :
    <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 règle de cache génère les ID de dépendance suivants :
    • dep:a,b
    • dep:a
    • dep:b
    Utilisez l'élément index avec le type de composant ci-dessus pour ajouter uniquement la valeur de l'élément situé à la position d'index spécifiée dans la collection ou le tableau à l'ID qui est en cours de création.
    <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 règle de cache ci-dessus génère le composant suivant à utiliser dans l'ID de cache : users: b. L'élément <method> sert à appeler une méthode vide au niveau d'un objet renvoyé.
  • L'élément field permet d'accéder à une zone dans un objet renvoyé. Vous pouvez imbriquer des objets method et des objets field indéfiniment dans n'importe quelle combinaison. La zone doit être publique. Cette zone n'est pas valide pour les composants edge-cacheable. Exemple :
    <component id="getUser" type="method"><method>getUserInfo
    <field>name</field></method></component>

    Cette méthode est équivalente à la méthode getUser().getUserInfo().name.

  • L'élément required permet d'indiquer si ce composant doit renvoyer une valeur non nulle pour cet ID cache correspondant à un cache valide. Si ce composant a pour valeur true, il doit renvoyer une valeur non nulle pour que cet ID cache représente un ID cache valide. S'il a pour valeur false (valeur par défaut), une valeur non nulle est utilisée dans la formation de l'ID cache et une valeur nulle signifie que ce composant n'est pas du tout utilisé dans la formation de l'ID. Par exemple :
    <required>true</required>
  • Utilisez l'élément value pour indiquer des valeurs qui doivent correspondre pour l'utilisation de ce composant dans la formation d'ID cache. Par exemple :
    <component id="getUser" type="method"><value>blue</value> 
    <value>red</value> </component>
  • Utilisez l'élément not-value pour indiquer des valeurs qui ne doivent pas correspondre pour l'utilisation de ce composant dans la formation d'ID cache. Cette méthode est similaire à l'élément value mais empêche les valeurs définies d'effectuer une mise en cache. Vous pouvez utiliser plusieurs éléments not-value lorsque plusieurs valeurs non valides sont présentes. Par exemple :
    <component id="getUser" type="method">
    <required>true</required>
    <not-value>blue</not-value>
    <not-value>red</not-value></component>
Le sous-élément component doit comporter soit un élément method et un élément field, soit un élément value ou un élément not-value. Les éléments method et field ne s'appliquent qu'aux commandes. L'exemple suivant illustre les attributs d'un sous-élément component :
<component id="isValid" type="method" ignore-value="true"><component>
Sous-élément timeout
Le sous-élément timeout sert à indiquer une valeur absolue pour le délai TTL (Time-To-Live) de l'entrée de cache. Par exemple,
<timeout>value</timeout>

valeur représente la durée de vie de l'entrée en cache ; elle est exprimée en secondes. Les entrées de cache qui sont en mémoire sont conservées indéfiniment (tant qu'elles restent en mémoire). Les entrées de cache qui sont stockées sur le disque sont supprimées si elles ne sont pas utilisées sous 24 heures.

Sous-élément inactivity
Le sous-élément inactivity sert à indiquer un délai TTL (Time-To-Live) de l'entrée de cache basé sur l'heure à laquelle l'entrée de cache a fait l'objet d'un accès pour la dernière fois. Il s'agit d'un sous-élément de cache-id.
<inactivity>value</inactivity>
valeur représente la durée de vie, en secondes, de l'entrée en cache après la dernière réussite du cache.
Sous-élément priority
Le sous-élément priority permet d'indiquer la priorité d'une entrée de cache dans un cache. La pondération des priorités est utilisée par l'algorithme LRU pour déterminer quelles entrées doivent être supprimées du cache si ce dernier est saturé. Par exemple,
<priority>value</priority>

valeur est un entier positif compris entre 1 et 16 inclus.

Exemples
L'exemple suivant conserve l'entrée de cache en cache pendant un minimum de 35 secondes et un maximum de 180 secondes. Si l'entrée de cache fait l'objet d'un accès avant la fin de chaque période d'inactivité de 35 secondes, cette période est prolongée de 35 secondes. Toutefois, du fait que l'élément timeout est également configuré, l'entrée de cache est toujours invalidée après 180 secondes. Si l'entrée de cache ne fait pas l'objet d'un accès avant la fin de la période de 35 secondes, cette entrée est supprimée du cache.
<cache-id>
	<component id="timeout" type="parameter">
		<required>true</required>
	</component>
	<timeout>180</timeout>
	<inactivity>35</inactivity>
	<priority>1</priority>
</cache-id>
L'exemple suivant conserve l'entrée de cache en cache pendant un minimum de 600 secondes. Si l'entrée de cache fait l'objet d'un accès avant la fin de chaque période d'inactivité de 600 secondes, cette période est prolongée de 600 secondes. Si l'entrée de cache ne fait pas l'objet d'un accès avant la fin de la période de 600 secondes, cette entrée est supprimée du cache.
<cache-id>
	<component id="timeout" type="parameter">
		<required>true</required>
	</component>
	<inactivity>600</inactivity>
	<priority>1</priority>
</cache-id>
Dans l'exemple suivant, la valeur de l'élément inactivity n'est pas significative parce que le délai d'expiration (timeout) est inférieur à la période d'inactivité. L'entrée de cache est toujours invalidée après 180 secondes, quel que soit le nombre d'accès dont elle fait l'objet.
<cache-id>
	<component id="timeout" type="parameter">
		<required>true</required>
	</component>
	<timeout>180</timeout>
	<inactivity>600</inactivity>
	<priority>1</priority>
</cache-id>
Sous-élément property
Le sous-élément property permet d'indiquer des propriétés génériques pour l'entrée du cache. Par exemple,
<property name="key">value</property>

prop est le nom de la propriété à définir, et valeur est la valeur correspondante.

Par exemple :
<property name="description">The Snoop Servlet</property>
Tableau 4. Valeurs des sous-éléments des propriétés. Classes valides des propriétés et signification
Propriété Classes valides Signification
sharing-policy/timeout/priority Toutes Remplace les paramètres de l'entrée de cache d'inclusion lorsque la requête correspond à cet ID de cache.
EdgeCacheable Servlet Remplace les paramètres de l'entrée de cache d'inclusion lorsque la requête correspond à cet ID de cache.

Sous-éléments idgenerator et metadatagenerator

L'élément idgenerator permet d'indiquer le nom de la classe chargée pour la génération de l'ID de cache. L'élément IdGenerator doit implémenter l'interface com.ibm.websphere.servlet.cache.IdGenerator pour un servlet ou l'interface com.ibm.websphere.webservices.IdGenerator pour le cache du client de services Web. Voici un exemple d'élément idgenerator :
<idgenerator> class name </idgenerator>
class name correspond au nom complet de la classe à utiliser. Définissez cette classe de générateur dans une bibliothèque partagée.
Utilisez l'élément metadatagenerator dans l'élément cache-id pour spécifier le nom de la classe chargée pour la génération de métadonnées. La classe MetadataGenerator doit implémenter l'interface com.ibm.websphere.servlet.cache.MetaDataGenerator pour un servlet ou l'interface com.ibm.websphere.cache.webservices.MetaDataGenerator pour le cache du client des services Web. La classe MetadataGenerator définit des propriétés, telles que les propriétés de délai d'expiration, d'inactivité, de mise en cache externe, ou des dépendances. Voici un exemple d'utilisation de l'élément metadatagenerator :
<metadatagenerator> classname </metadatagenerator>
Dans cet exemple, class name est le nom complet de la classe à utiliser. Définissez cette classe de générateur dans une bibliothèque partagée.

Elément dependency-id

Utilisez l'élément dependency-id pour spécifier d'autres identificateurs de cache qui associent plusieurs entrées de cache au même identificateur de groupe.

La valeur de l'élément dependency-id est générée au moyen de la concaténation de la chaîne de base d'ID de dépendance avec les valeurs renvoyées par ses éléments component. Si un composant requis renvoie une valeur NULL, la totalité de la dépendance n'est pas générée et n'est pas utilisée. Validez les ID de dépendance de façon explicite via l'API de cache dynamique ou utilisez l'élément invalidation. Plusieurs règles d'ID de dépendance peuvent exister dans un élément cache-entry. Toutes les règles de dépendance sont exécutées séparément.

Elément invalidation

Pour invalider les objets mis en cache, le serveur d'applications doit générer des ID d'invalidation uniques. Créez les ID d'invalidation en écrivant du code Java personnalisé ou par le biais de règles définies dans la règle de cache de chaque entrée de cache. L'exemple suivant illustre une invalidation dans la règle de cache :
<invalidation>component* | invalidationgenerator? </invalidation>

Sous-élément invalidationgenerator

L'élément invalidationgenerator est uniquement utilisé avec le cache du client des services Web. Utilisez cet élément pour spécifier le nom de classe à charger pour générer des ID d'invalidation. La classe InvalidationGenerator doit implémenter l'interface com.ibm.websphere.cache.webservices.InvalidationGenerator. Voici un exemple d'élément invalidationgenerator :
<invalidationgenerator>class name</invalidationgenerator>
Dans cet exemple, class name est le nom complet de la classe qui implémente l'interface com.ibm.websphere.cache.webservices.InvalidationGenerator. Définissez cette classe de générateur dans une bibliothèque partagée.

Exemple de fichier cachespec.xml

<?xml version="1.0"?>
<!DOCTYPE cache SYSTEM "cachespec.dtd">

 <cache> 
	<cache-entry>
		<class>servlet  </class>
		<name>/MyDefinedServlet</name>
		<cache-id>
			<timeout>0</timeout>
		</cache-id>
	</cache-entry>
	<cache-entry>
		<class>servlet  </class>
		<name>/MyAnnotatedServlet</name>
		<cache-id>
			<timeout>3600</timeout>
		</cache-id>
	</cache-entry>
	<cache-entry>
		<class>servlet  </class>
		<name>/MyProgrammaticServlet</name>
		<cache-id>
			<timeout>3600</timeout>
		</cache-id>
	</cache-entry>
	<cache-entry>
		<class>servlet  </class>
		<name>/MyProgrammaticServlet2</name>
		<cache-id>
			<timeout>3600</timeout>
		</cache-id>
	</cache-entry>
	<cache-entry>
		<class>servlet  </class>
		<name>/MyProgrammaticServlet3</name>
		<cache-id>
			<timeout>3600</timeout>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/StartAsyncDispatchCompleteAltPath</name>
		<cache-id>
		    <component id="test" type="parameter">
                <required>true</required>
                <value>testDoNotConsume</value>
            </component>
			<property name="do-not-consume">true</property>
			<timeout>5000</timeout>
			<priority>2</priority>
		</cache-id>
        <cache-id>
           <component id="test" type="parameter">
                <required>true</required>
                <value>testCacheChildONLY</value>
            </component>
			<property name="do-not-consume">true</property>
            <timeout>5000</timeout>
            <priority>2</priority>
        </cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/StartAsyncDispatchComplete</name>
		<cache-id>
		   <component id="test" type="parameter">
                <required>true</required>
                <value>testDoNotConsume</value>
            </component>
			<property name="consume-subfragments">false</property>
			<timeout>5000</timeout>
			<priority>2</priority>
		</cache-id>
		<cache-id>
           <component id="test" type="parameter">
                <required>true</required>
                <value>testConsumeSubFragments</value>
            </component>
            <property name="consume-subfragments">true</property>
            <timeout>5000</timeout>
            <priority>2</priority>
        </cache-id>
        <cache-id>
           <component id="test" type="parameter">
                <required>true</required>
                <value>testTimeout</value>
            </component>
            <property name="do-not-consume">true</property>
            <timeout>5000</timeout>
            <priority>2</priority>
        </cache-id>
        <cache-id>
           <component id="test" type="parameter">
                <required>true</required>
                <value>testError</value>
            </component>
            <property name="do-not-consume">true</property>
            <timeout>5000</timeout>
            <priority>2</priority>
        </cache-id>
 	</cache-entry>
 	
	<cache-entry>
		<class>servlet  </class>
		<name>/DiscardParent.jsp</name>
		<property name="consume-subfragments">true</property>
		<cache-id>
			<timeout>0</timeout>
		</cache-id>
	</cache-entry>
	
	<cache-entry>
		<class>servlet  </class>
		<name>/AttrA1.jsp</name>
		<property name="consume-subfragments">true</property>
		<cache-id>
			<timeout>0</timeout>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/AttrA2.jsp</name>
		<property name="consume-subfragments">true</property>
		<cache-id>
			<timeout>0</timeout>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/AttrA3.jsp</name>
		<property name="consume-subfragments">true</property>
		<property name="save-attributes">
			false
			<exclude>saveThisAttr</exclude>
		</property>
		<cache-id>
			<timeout>0</timeout>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/AttrC3.jsp</name>
		<property name="do-not-cache">true</property>
		<property name="save-attributes">false</property>
		<cache-id>
			<timeout>0</timeout>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/CacheTest.jsp</name>
		<cache-id>
			<component id="output" type="attribute">
				<required>true</required>
			</component>
			<timeout>180</timeout>
		</cache-id>
		<dependency-id>
			response
			<component id="output" type="attribute">
				<required>true</required>
			</component>
		</dependency-id>
	</cache-entry>
	<cache-entry>
		<class>servlet  </class>
		<name>Include1.jsp</name>
		<cache-id>
			<component id="outputForInclude1" type="attribute">
				<required>true</required>
			</component>
			<timeout>120</timeout>
			<priority>2</priority>
		</cache-id>
		<dependency-id>
			response
			<component id="output" type="attribute">
				<required>true</required>
			</component>
		</dependency-id>
	</cache-entry>


	<cache-entry>
		<class>servlet  </class>
		<name>ESIParent.jsp</name>
		<property name="EdgeCacheable">true</property>
		<cache-id>
			<component id="parm1" type="parameter" />
			<timeout>180</timeout>
			<priority>2</priority>
		</cache-id>
		<dependency-id>
			dep1
			<component id="parm1" type="parameter" />
		</dependency-id>
	</cache-entry>
	<cache-entry>
		<class>servlet  </class>
		<name>ESIChild.jsp</name>
		<property name="EdgeCacheable">true</property>
		<cache-id>
			<component id="parm2" type="parameter" />
			<timeout>180</timeout>
			<priority>2</priority>
		</cache-id>
		<dependency-id>
			dep4
			<component id="parm2" type="parameter" />
		</dependency-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>ESI1Cached.jsp</name>
		<cache-id>
			<component id="param2" type="parameter">
				<required>true</required>
			</component>
			<timeout>180</timeout>
			<priority>2</priority>
		</cache-id>
		<dependency-id>ESI1</dependency-id>
	</cache-entry>
	<cache-entry>
		<class>servlet  </class>
		<name>ESI1Edgeable.jsp</name>
		<property name="EdgeCacheable">true</property>
		<cache-id>
			<component id="param2" type="parameter">
				<required>true</required>
			</component>
			<timeout>180</timeout>
			<priority>2</priority>
		</cache-id>
		<cache-id>
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
			<timeout>180</timeout>
			<priority>2</priority>
		</cache-id>
		<dependency-id>ESI1</dependency-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>ESI2Cached.jsp</name>
		<cache-id>
			<timeout>240</timeout>
			<priority>2</priority>
		</cache-id>
		<dependency-id>ESI2</dependency-id>
	</cache-entry>
	<cache-entry>
		<property name="EdgeCacheable">true</property>
		<name>ESI2Edgeable.jsp</name>
		<class>servlet  </class>
		<cache-id>
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
			<timeout>180</timeout>
			<priority>2</priority>
		</cache-id>
		<cache-id>
			<timeout>180</timeout>
			<priority>2</priority>
		</cache-id>
		<dependency-id>ESI2</dependency-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>ESI3Cached.jsp</name>
		<cache-id>
			<timeout>60</timeout>
			<priority>2</priority>
		</cache-id>
		<dependency-id>ESI3</dependency-id>
	</cache-entry>
	<cache-entry>
		<class>servlet  </class>
		<name>ESI3Edgeable.jsp</name>
		<property name="EdgeCacheable">true</property>
		<cache-id>
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
			<timeout>60</timeout>
			<priority>2</priority>
		</cache-id>
		<cache-id>
			<timeout>60</timeout>
			<priority>2</priority>
		</cache-id>
		<dependency-id>ESI3</dependency-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>ESI4Edgeable.jsp</name>
		<property name="EdgeCacheable">true</property>
		<cache-id>
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
			<timeout>60</timeout>
			<priority>2</priority>
		</cache-id>
		<cache-id>
			<timeout>60</timeout>
			<priority>2</priority>
		</cache-id>
		<dependency-id>ESI4</dependency-id>
	</cache-entry>


	<cache-entry>
		<class>servlet  </class>
		<name>ESI5Edgeable.jsp</name>
		<property name="EdgeCacheable">true</property>
		<cache-id>
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
			<timeout>60</timeout>
			<priority>2</priority>
		</cache-id>
		<cache-id>
			<timeout>60</timeout>
			<priority>2</priority>
		</cache-id>
		<dependency-id>ESI5</dependency-id>
	</cache-entry>


	<!--Test ESI w/ wildcard character-->
	<cache-entry>
		<class>servlet  </class>
		<name>ESI6Edgeable.jsp</name>
		<cache-id>
			<component id="*" type="parameter">
				<required>false</required>
			</component>
			<timeout>180</timeout>
			<property name="EdgeCacheable">true</property>
		</cache-id>
	</cache-entry>


	<cache-entry>
		<class>servlet  </class>
		<name>ESI7Edgeable.jsp</name>
		<property name="EdgeCacheable">true</property>
		<cache-id>
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
			<timeout>60</timeout>
			<priority>2</priority>
		</cache-id>
		<cache-id>
			<timeout>60</timeout>
			<priority>2</priority>
		</cache-id>
		<dependency-id>ESI7</dependency-id>
	</cache-entry>

	<cache-entry>
		<class>webservice</class>
		<name>/services/CounterService1</name>
		<sharing-policy>not-shared</sharing-policy>
		<cache-id>
			<component id="Request-Hash" type="header">
				<required>true</required>
			</component>
			<timeout>0</timeout>
			<priority>1</priority>
			<property name="description">
				This is SOAP Servlet.
			</property>
		</cache-id>
		<cache-id>
			<component id="" type="SOAPAction">
				<value>urn:lookup</value>
			</component>
			<component id="Hash" type="SOAPEnvelope" />
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
		<cache-id>
			<component id="" type="serviceOperation">
				<value>urn:counterservice1:counter1</value>
			</component>
			<component id="Hash" type="SOAPEnvelope" />
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
		<cache-id>
			<component id="" type="serviceOperation">
				<value>urn:counterservice1:counter1</value>
			</component>
			<component id="in" type="serviceOperationParameter">
				<value>xxx</value>
			</component>
			<component id="Hash" type="SOAPEnvelope" />
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
		<cache-id>
			<component id="" type="serviceOperation">
				<not-value>urn:counterservice1:counter1</not-value>
			</component>
			<component id="in" type="serviceOperationParameter">
				<not-value>xxx</not-value>
			</component>
			<component id="Hash" type="SOAPEnvelope" />
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
		<cache-id>
			<component id="" type="SOAPAction">
				<value>urn:lookup</value>
			</component>
			<component id="Literal" type="SOAPEnvelope" />
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
		<cache-id>
			<component id="" type="SOAPAction">
				<value>urn:lookup</value>
			</component>
			<component id="Hash" type="SOAPEnvelope" />
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
		<cache-id>
			<component id="" type="serviceOperation">
				<value>urn:counterservice1:counter1</value>
				<value>urn:counterservice2:counter2</value>
			</component>
			<component id="Hash" type="SOAPEnvelope" />
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
		<cache-id>
			<component id="" type="serviceOperation">
				<value>urn:counterservice1:counter1</value>
			</component>
			<component id="Hash" type="SOAPEnvelope" />
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
		<dependency-id>depId</dependency-id>
		<invalidation>
			depId
			<component id="" type="serviceOperation"
				ignore-value="true">
				<value>urn:counterservice1:reset1</value>
			</component>
		</invalidation>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>TimeoutPos.jsp</name>
		<cache-id>
			<timeout>10</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>com.ibm.ws.cache.servlet.pathinfo1.class</name>
		<cache-id>
			<component id="" type="pathinfo">
				<required>true</required>
			</component>
			<component id="genPathInfo" type="parameter">
				<required>false</required>
			</component>
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>
	<cache-entry>
		<class>servlet  </class>
		<name>com.ibm.ws.cache.servlet.pathinfo2.class</name>
		<cache-id>
			<component id="" type="pathinfo">
				<required>true</required>
			</component>
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>
	<cache-entry>
		<class>servlet  </class>
		<name>/pathinfo1/xxxx</name>
		<cache-id>
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>
	<cache-entry>
		<class>servlet  </class>
		<name>/pathinfo1/yyyy</name>
		<cache-id>
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<sharing-policy>shared-pull</sharing-policy>
		<name>com.ibm.ws.cache.servlet.reqparmtest.class</name>
		<cache-id>
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
		<cache-id>
			<component id="timeout" type="parameter">
				<required>true</required>
			</component>
			<timeout>15</timeout>
			<priority>1</priority>
		</cache-id>
		<dependency-id>
			reqparm
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
		</dependency-id>
		<invalidation>
			reqparm
			<component id="inv" type="parameter">
				<required>true</required>
			</component>
		</invalidation>
	</cache-entry>
	<cache-entry>
		<class>servlet  </class>
		<sharing-policy>shared-push</sharing-policy>
		<name>
			com.ibm.ws.cache.servlet.reqparmtest_sharePush.class
		</name>
		<cache-id>
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
		<cache-id>
			<component id="timeout" type="parameter">
				<required>true</required>
			</component>
			<timeout>15</timeout>
			<priority>1</priority>
		</cache-id>
		<dependency-id>
			reqparm
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
		</dependency-id>
		<invalidation>
			reqparm
			<component id="inv" type="parameter">
				<required>true</required>
			</component>
		</invalidation>
	</cache-entry>
	<cache-entry>
		<class>servlet  </class>
		<name>com.ibm.ws.cache.servlet.reqattrtest.class</name>
		<cache-id>
			<component id="arg" type="attribute">
				<required>false</required>
			</component>
			<component id="IAmRequired" type="attribute"
				ignore-value="true">
				<required>true</required>
			</component>
			<component id="int" type="attribute">
				<method>intValue</method>
				<required>false</required>
			</component>
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/STMTestServlet</name>
		<sharing-policy>shared-push</sharing-policy>
		<cache-id>
			<component id="parm" type="parameter">
				<required>false</required>
			</component>
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-instance name="services/cache/servletInstance_1">

		<cache-entry>
			<class>servlet  </class>
			<name>/STMTestServlet_shareNone</name>
			<sharing-policy>not-shared</sharing-policy>
			<cache-id>
				<component id="parm" type="parameter">
					<required>false</required>
				</component>
				<timeout>0</timeout>
				<priority>1</priority>
			</cache-id>
		</cache-entry>

		<cache-entry>
			<class>servlet  </class>
			<name>/STMTestServlet_shareDefault</name>
			<cache-id>
				<component id="parm" type="parameter">
					<required>false</required>
				</component>
				<timeout>0</timeout>
				<priority>1</priority>
			</cache-id>
		</cache-entry>

		<cache-entry>
			<class>servlet  </class>
			<name>/STMTestServlet_sharePush</name>
			<sharing-policy>shared-push</sharing-policy>
			<cache-id>
				<component id="parm" type="parameter">
					<required>false</required>
				</component>
				<timeout>0</timeout>
				<priority>1</priority>
			</cache-id>
		</cache-entry>

		<cache-entry>
			<class>servlet  </class>
			<name>/STMTestServlet_sharePull</name>
			<sharing-policy>shared-pull</sharing-policy>
			<cache-id>
				<component id="parm" type="parameter">
					<required>false</required>
				</component>
				<timeout>0</timeout>
				<priority>1</priority>
			</cache-id>
		</cache-entry>

		<cache-entry>
			<class>servlet  </class>
			<name>/STMTestServlet_sharePushPull</name>
			<sharing-policy>shared-push-pull</sharing-policy>
			<cache-id>
				<component id="parm" type="parameter">
					<required>false</required>
				</component>
				<timeout>0</timeout>
				<priority>1</priority>
			</cache-id>
		</cache-entry>

		<cache-entry>
			<class>servlet  </class>
			<name>SITimeStamp</name>
			<cache-id>
				<component id="parm" type="parameter" />
				<timeout>180</timeout>
				<priority>2</priority>
			</cache-id>
		</cache-entry>


	</cache-instance>

	<cache-entry>
		<class>servlet  </class>
		<name>/CloseAndFlush</name>
		<cache-id>
			<component id="action" type="parameter">
				<required>true</required>
			</component>
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-instance name="services/cache/servletInstance_1">
	<cache-entry>
		<class>servlet  </class>
		<name>/TimeStamp</name>
		<sharing-policy>not-shared</sharing-policy>
		<cache-id>
			<component id="timeout" type="parameter">
				<required>true</required>
			</component>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
		<cache-id>
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
		<cache-id>
			<component id="inactivity0" type="parameter">
				<required>true</required>
			</component>
			<timeout>30</timeout>
			<inactivity>0</inactivity>
			<priority>1</priority>
		</cache-id>
		<cache-id>
			<component id="inactivity1" type="parameter">
				<required>true</required>
			</component>
			<timeout>60</timeout>
			<inactivity>30</inactivity>
			<priority>1</priority>
		</cache-id>
		<cache-id>
			<component id="inactivity2" type="parameter">
				<required>true</required>
			</component>
			<inactivity>30</inactivity>
			<priority>1</priority>
		</cache-id>
		<cache-id>
			<component id="inactivity3" type="parameter">
				<required>true</required>
			</component>
			<timeout>30</timeout>
			<inactivity>60</inactivity>
			<priority>1</priority>
		</cache-id>
		<cache-id>
			<property name="ignore-get-post">false</property>
			<component id="ignore" type="parameter">
				<value>false</value>
			</component>
		</cache-id>
		<cache-id>
			<property name="ignore-get-post">true</property>
			<component id="ignore" type="parameter">
				<value>true</value>
			</component>
		</cache-id>
		<dependency-id>
			timestamp
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
		</dependency-id>
		<invalidation>
			timestamp
			<component id="inv" type="parameter">
				<required>true</required>
			</component>
		</invalidation>
	</cache-entry>

	</cache-instance> 

	<cache-entry>
		<class>servlet  </class>
		<name>/TimeStamp1</name>
		<property name="persist-to-disk">false</property>
		<sharing-policy>not-shared</sharing-policy>
		<cache-id>
			<component id="timeout" type="parameter">
				<required>true</required>
			</component>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
		<cache-id>
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
		<dependency-id>
			timestamp
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
		</dependency-id>
		<invalidation>
			timestamp
			<component id="inv" type="parameter">
				<required>true</required>
			</component>
		</invalidation>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/TimeStamp2</name>
		<property name="persist-to-disk">false</property>
		<sharing-policy>not-shared</sharing-policy>
		<cache-id>
			<component id="timeout" type="parameter">
				<required>true</required>
			</component>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
		<cache-id>
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
		<dependency-id>
			timestamp2
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
		</dependency-id>
		<invalidation>
			timestamp2
			<component id="inv" type="parameter">
				<required>true</required>
			</component>
		</invalidation>
	</cache-entry>

	<cache-instance name="services/cache/servletInstance_1">
		<cache-entry>
			<class>command</class>
			<name>com.ibm.ws.cache.command.MyQuoteCommand.class</name>
			<cache-id>
				<timeout>0</timeout>
				<priority>3</priority>
				<component id="getTicker" type="method" />
			</cache-id>
			<dependency-id>MyQuoteTicker</dependency-id>
		</cache-entry>
	</cache-instance> 
	
	<cache-entry>
		<class>command</class>
		<name>com.ibm.ws.cache.command.QuoteCommand.class</name>
		<cache-id>
			<timeout>180</timeout>
			<priority>3</priority>
			<component id="getTicker" type="method" />
		</cache-id>
		<dependency-id>
			ticker
			<component id="getTicker" type="method" />
		</dependency-id>
	</cache-entry>

	<cache-entry>
		<class>command</class>
		<name>com.ibm.ws.cache.command.QuoteCommandComplex.class</name>
		<cache-id>
			<timeout>240</timeout>
			<priority>3</priority>
			<component id="getComplex" type="method">
				<method>getTicker</method>
			</component>
		</cache-id>
		<dependency-id>
			ticker
			<component id="getComplex" type="method">
				<field>ticker</field>
			</component>
		</dependency-id>
	</cache-entry>

	<cache-entry>
		<class>command</class>
		<name>com.ibm.ws.cache.command.QuoteCommandIdGen</name>
		<cache-id>
			<timeout>120</timeout>
			<priority>3</priority>
			<idgenerator>
				com.ibm.ws.cache.command.QuoteIdGenerator
			</idgenerator>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>command</class>
		<name>com.ibm.ws.cache.command.NoOutputPropCommand</name>
		<cache-id>
			<timeout>180</timeout>
			<priority>3</priority>
			<component id="getTicker" type="method" />
		</cache-id>
		<dependency-id>
			ticker
			<component id="getTicker" type="method" />
		</dependency-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/bufferwritercached</name>
		<cache-id>
			<timeout>0</timeout>
			<priority>3</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/bufferstreamcached</name>
		<cache-id>
			<timeout>0</timeout>
			<priority>3</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/BasicServlet</name>
		<cache-id>
			<component id="testCookie" type="cookie">
				<required>true</required>
			</component>
			<timeout>30</timeout>
		</cache-id>
		<cache-id>
			<component id="action" type="parameter" />
			<component id="" type="locale" />
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>command</class>
		<name>com.ibm.ws.cache.command.WatchListCommand</name>
		<cache-id>
			<timeout>360</timeout>
			<priority>4</priority>
			<component id="userGroup" type="field" />
			<component id="userNumber" type="field" />
		</cache-id>
		<dependency-id>
			USER
			<component id="userGroup" type="field" />
			<component id="userNumber" type="field" />
		</dependency-id>
	</cache-entry>

	<cache-entry>
		<class>command</class>
		<name>com.ibm.ws.cache.command.WatchListCommandMixed</name>
		<cache-id>
			<timeout>360</timeout>
			<priority>4</priority>
			<component id="userGroup" type="field" />
			<component id="getUserNumber" type="method" />
		</cache-id>
		<dependency-id>
			USER
			<component id="userGroup" type="field" />
			<component id="getUserNumber" type="method" />
		</dependency-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>com.ibm.ws.cache.command.CommandTestServlet.class</name>
		<invalidation>
			USER
			<component id="action" type="parameter"
				ignore-value="true">
				<value>invalidate</value>
			</component>
			<component id="group" type="parameter" />
			<component id="user" type="parameter" />
		</invalidation>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>consumeParent.jsp</name>
		<property name="consume-subfragments">true</property>
		<cache-id>
			<timeout>0</timeout>
			<priority>4</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>consumeParent2.jsp</name>
		<cache-id>
			<timeout>0</timeout>
			<priority>4</priority>
			<property name="consume-subfragments">true</property>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>consumeParentForward.jsp</name>
		<cache-id>
			<timeout>0</timeout>
			<priority>4</priority>
			<property name="consume-subfragments">true</property>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/esiForwardInclude.jsp</name>
		<cache-id>
			<property name="EdgeCacheable">true</property>
			<timeout>600</timeout>
			<priority>2</priority>
		</cache-id>
	</cache-entry>


	<cache-entry>
		<class>servlet  </class>
		<name>/esiParentConsume.jsp</name>
		<property name="consume-subfragments">true</property>
		<cache-id>
			<property name="EdgeCacheable">true</property>
			<timeout>600</timeout>
			<priority>2</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/alturlcontroller1</name>
		<property name="EdgeCacheable">true</property>
		<cache-id>
			<timeout>600</timeout>
			<priority>2</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/AltUrlTest2.jsp</name>
		<property name="EdgeCacheable">true</property>
		<property name="alternate_url">/alturlcontroller2</property>
		<cache-id>
			<timeout>600</timeout>
			<priority>2</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/AltUrlTest3.jsp</name>
		<property name="EdgeCacheable">true</property>
		<property name="alternate_url">/alturlcontroller3</property>
		<cache-id>
			<timeout>600</timeout>
			<priority>2</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/AltUrlTest4.jsp</name>
		<property name="EdgeCacheable">true</property>
		<property name="alternate_url">/alturlcontroller4</property>
		<cache-id>
			<timeout>600</timeout>
			<priority>2</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/AltUrlTest5.jsp</name>
		<cache-id>
			<timeout>600</timeout>
			<priority>2</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>com.ibm.ws.cache.servlet.reqparmlisttest.class</name>
		<cache-id>
			<component id="parm" type="parameter-list">
				<required>true</required>
			</component>
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/SaveAttributesParent.jsp</name>
		<sharing-policy>not-shared</sharing-policy>
		<property name="consume-subfragments">false</property>
		<property name="save-attributes">false</property>
		<cache-id>
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
		<dependency-id>
			timestamp
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
		</dependency-id>
		<invalidation>
			timestamp
			<component id="inv" type="parameter">
				<required>true</required>
			</component>
		</invalidation>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/ReqAttA.jsp</name>
		<cache-id>
			<component id="ReqAttr" type="attribute">
				<required>true</required>
			</component>
			<timeout>0</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/ServletPathTest</name>
		<sharing-policy>not-shared</sharing-policy>
		<cache-id>
			<component id="" type="servletpath">
				<required>true</required>
			</component>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/ESICookie.jsp</name>
		<property name="EdgeCacheable">true</property>
		<cache-id>
			<timeout>180</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/ESIQueryStringParent.jsp</name>
		<cache-id>
			<timeout>180</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/ESIQueryStringChild.jsp</name>
		<property name="EdgeCacheable">true</property>
		<cache-id>
			<component id="scenario" type="parameter">
				<required>true</required>
			</component>
			<component id="parm1" type="parameter">
				<required>true</required>
			</component>
			<component id="testCookie" type="cookie">
				<required>true</required>
			</component>
			<timeout>180</timeout>
			<priority>1</priority>
		</cache-id>
		<cache-id>
			<timeout>180</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>com.ibm.ws.cache.servlet.IncludeTimeStamp.class</name>
		<sharing-policy>not-shared</sharing-policy>
		<cache-id>
			<component id="type" type="attribute">
				<required>true</required>
			</component>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>
	<cache-entry>
		<class>JAXRPCClient</class>
		<name>
			http://localhost:9080/dynacachetests/services/Counter
		</name>
		<cache-id>
			<component
				id="http://schemas.xmlsoap.org/soap/envelope/:Counter"
				type="SOAPHeaderEntry" />
			<timeout>0</timeout>
		</cache-id>
		<cache-id>
			<component
				id="http://schemas.xmlsoap.org/soap/envelope/:urn:headerNS:Counter"
				type="SOAPHeaderEntry" />
			<timeout>0</timeout>
		</cache-id>
		<cache-id>
			<component id="" type="operation">
				<value>
					http://counter.webservices.cache.ws.ibm.com:counter1
				</value>
			</component>
			<component id="in" type="part"></component>
			<timeout>0</timeout>
		</cache-id>
		<cache-id>
			<component id="Hash" type="SOAPEnvelope" />
			<timeout>0</timeout>
		</cache-id>
		<dependency-id>
			Counter_in
			<component
				id="http://schemas.xmlsoap.org/soap/envelope/:urn:headerNS:Counter"
				type="SOAPHeaderEntry">
				<required>true</required>
			</component>
		</dependency-id>
		<invalidation>
			Counter_in
			<component
				id="http://schemas.xmlsoap.org/soap/envelope/:urn:headerNS:Reset"
				type="SOAPHeaderEntry">
				<required>true</required>
			</component>
		</invalidation>
	</cache-entry>
	<cache-entry>
		<class>JAXRPCClient</class>
		<name>
			http://localhost:9080/dynacachetests/services/AddressBookBean
		</name>
		<cache-id>
			<component id="" type="operation">
				<value>
					http://addr.webservices.cache.ws.ibm.com:getAddressFromName
				</value>
			</component>
			<component id="name" type="part"></component>
			<component id="country" type="part"></component>
			<timeout>0</timeout>
		</cache-id>
		<dependency-id>
			AddressBook
			<component id="" type="operation" ignore-value="true">
				<value>
					http://addr.webservices.cache.ws.ibm.com:getAddressFromName
				</value>
				<required>true</required>
			</component>
			<component id="name" type="part">
				<required>true</required>
			</component>
		</dependency-id>
		<invalidation>
			AddressBook
			<component id="" type="operation" ignore-value="true">
				<value>
					http://addr.webservices.cache.ws.ibm.com:invalidate
				</value>
				<required>true</required>
			</component>
			<component id="name" type="part">
				<required>true</required>
			</component>
		</invalidation>
	</cache-entry>
	<cache-entry>
		<class>JAXRPCClient</class>
		<name>
			http://localhost:9080/dynacachetests/services/StockQuote
		</name>
		<sharing-policy>shared-push</sharing-policy>
		<cache-id>
			<idgenerator>
				com.ibm.ws.cache.webservices.stock.QuoteIdGenerator
			</idgenerator>
			<metadatagenerator>
				com.ibm.ws.cache.webservices.stock.QuoteMetaDataGenerator
			</metadatagenerator>
			<priority>5</priority>
		</cache-id>
		<invalidation>
			http://localhost:9080/dynacachetests/services/StockQuote
			<invalidationgenerator>
				com.ibm.ws.cache.webservices.stock.QuoteInvalidationGenerator
			</invalidationgenerator>
		</invalidation>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/basic.do</name>
		<cache-id>
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
		<dependency-id>
			struts
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
		</dependency-id>
		<invalidation>
			struts
			<component id="inv" type="parameter">
				<required>true</required>
			</component>
		</invalidation>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/forward.do</name>
		<cache-id>
			<property name="EdgeCacheable">true</property>
			<component id="type" type="parameter">
				<required>true</required>
				<value>esiParentConsume</value>
			</component>
			<component id="JSESSIONID" type="cookie" />
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/strutsTimeStamp.jsp</name>
		<cache-id>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/STTimeStamp</name>
		<cache-id>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>


	<cache-entry>
		<class>servlet  </class>
		<name>/child1.do</name>
		<cache-id>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/stConsumeFragment.do</name>
		<cache-id>
			<component id="whoami" type="parameter">
				<required>true</required>
				<value>grandparent</value>
			</component>
			<property name="consume-subfragments">true</property>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/stConsumeParent.jsp</name>
		<property name="consume-subfragments">true</property>
		<cache-id>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/stDNCFragment.do</name>
		<property name="consume-subfragments">true</property>
		<cache-id>
			<component id="whoami" type="parameter">
				<required>true</required>
				<value>grandparent</value>
			</component>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
		<dependency-id>
			DNC
			<component id="whoami" type="parameter">
				<required>true</required>
			</component>
		</dependency-id>
		<invalidation>
			DNC
			<component id="inv" type="parameter">
				<required>true</required>
			</component>
		</invalidation>

	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/stDNCGrandChild.jsp</name>
		<property name="do-not-consume">true</property>
		<cache-id>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/stSaveAttrParent.do</name>
		<property name="save-attributes">false</property>
		<cache-id>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>


	<cache-entry>
		<class>servlet  </class>
		<name>/stDisplayInfo.jsp</name>
		<cache-id>
			<component id="lbean" type="session">
				<required>true</required>
			</component>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/tileParent.jsp</name>
		<cache-id>
			<component id="type" type="parameter">
				<required>true</required>
				<value>strut</value>
			</component>
			<timeout>180</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/tileChild.jsp</name>
		<cache-id>
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
			<timeout>180</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/tileChildServlet</name>
		<cache-id>
			<timeout>180</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/tileEsiParent.jsp</name>
		<cache-id>
			<component id="type" type="parameter">
				<value>edgeable</value>
			</component>
			<property name="EdgeCacheable">true</property>
			<timeout>180</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>


	<cache-entry>
		<class>servlet  </class>
		<name>/tileEsiChild.jsp</name>
		<property name="EdgeCacheable">true</property>
		<cache-id>
			<component id="arg1" type="parameter">
				<required>true></required>
			</component>
			<timeout>180</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/tileGrandParent.jsp</name>
		<property name="consume-subfragments">true</property>
		<cache-id>
			<timeout>180</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/tileDNCGrandParent.jsp</name>
		<property name="consume-subfragments">true</property>
		<cache-id>
			<timeout>180</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>


	<cache-entry>
		<class>servlet  </class>
		<name>/tileCSFChild1.jsp</name>
		<property name="do-not-consume">true</property>
		<cache-id>
			<component id="arg1" type="parameter">
				<value>DNC</value>
			</component>
			<timeout>180</timeout>
			<priority>1</priority>
		</cache-id>
		<dependency-id>
			DNC
			<component id="arg1" type="parameter">
				<required>true</required>
			</component>
		</dependency-id>
		<invalidation>
			DNC
			<component id="inv" type="parameter">
				<required>true</required>
			</component>
		</invalidation>

	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/tileSaveAttrParent.jsp</name>
		<property name="save-attributes">false</property>
		<cache-id>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/header.jsp</name>
		<cache-id>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/body.jsp</name>
		<cache-id>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/footer.jsp</name>
		<cache-id>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/testSTDefinition.jsp</name>
		<property name="consume-subfragments">true</property>
		<cache-id>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/SavAttrParent/TrueExclude</name>
		<property name="save-attributes">
			true
			<exclude>att1</exclude>
		</property>
		<cache-id>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/SavAttrParent/FalseExclude</name>
		<property name="save-attributes">
			false
			<exclude>att1</exclude>
		</property>
		<cache-id>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/DCP</name>
		<cache-id>
			<timeout>180</timeout>
			<priority>2</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/DCPParent</name>
		<property name="consume-subfragments">true</property>
		<cache-id>
			<timeout>180</timeout>
			<priority>2</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/DCPGrandParent</name>
		<property name="consume-subfragments">true</property>
		<cache-id>
			<timeout>180</timeout>
			<priority>2</priority>
		</cache-id>
	</cache-entry>


	<cache-instance name="services/cache/servletInstance_2">
		<cache-entry>
			<class>servlet  </class>
			<name>/TimeStampCM2</name>
			<sharing-policy>not-shared</sharing-policy>
			<cache-id>
				<component id="arg1" type="parameter">
					<required>true</required>
				</component>
			</cache-id>
		</cache-entry>
	</cache-instance>

	<cache-instance name="services/cache/servletInstance_3">
		<cache-entry>
			<class>servlet  </class>
			<name>/TimeStampCM3</name>
			<sharing-policy>not-shared</sharing-policy>
			<cache-id>
				<component id="arg1" type="parameter">
					<required>true</required>
				</component>
			</cache-id>
		</cache-entry>
	</cache-instance>


	<cache-instance name="services/cache/servletInstance_4">

		<cache-entry>
			<class>servlet  </class>
			<name>ServletInstance_Esi1_ESIParent.jsp</name>
			<property name="EdgeCacheable">true</property>
			<cache-id>
				<component id="parm1" type="parameter" />
				<timeout>180</timeout>
				<priority>2</priority>
			</cache-id>
			<dependency-id>
				ci_dep1
				<component id="parm1" type="parameter" />
			</dependency-id>
		</cache-entry>

	</cache-instance>

	<cache-instance name="services/cache/servletInstance_5">

		<cache-entry>
			<class>servlet  </class>
			<name>ServletInstance_Esi2_ESIChild.jsp</name>
			<property name="EdgeCacheable">true</property>
			<cache-id>
				<component id="parm2" type="parameter" />
				<timeout>180</timeout>
				<priority>2</priority>
			</cache-id>
			<dependency-id>
				ci_dep4
				<component id="parm2" type="parameter" />
			</dependency-id>
		</cache-entry>

	</cache-instance>

	<cache-entry>
		<class>servlet  </class>
		<name>JspRecompileTest.jsp</name>
		<cache-id>
			<component id="parm1" type="parameter" />
			<timeout>180</timeout>
			<priority>2</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/DNCForwardServlet</name>
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test1</value>
				<value>test2</value>
				<value>test3</value>
				<value>test4</value>
				<value>test6</value>
				<value>test8</value>
				<value>test10</value>
			</component>
			<property name="consume-subfragments">true</property>
		</cache-id>
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test5</value>
			</component>
			<property name="consume-subfragments">true</property>
			<property name="do-not-consume">true</property>
		</cache-id>
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test7</value>
				<value>test9</value>
			</component>
			<property name="EdgeCacheable">true</property>
			<property name="consume-subfragments">true</property>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/DNCGrandParent.jsp</name>
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test1</value>
			</component>
		</cache-id>
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test2</value>
			</component>
			<property name="consume-subfragments">true</property>
		</cache-id>
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test3</value>
			</component>
			<property name="consume-subfragments">true</property>
			<property name="do-not-consume">true</property>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test5</value>
			</component>
			<property name="consume-subfragments">true</property>
			<property name="do-not-consume">true</property>
		</cache-id>

		<dependency-id>
			DNC3
			<component id="test" type="parameter">
				<required>true</required>
			</component>
		</dependency-id>

		<invalidation>
			DNC3
			<component id="inv3" type="parameter">
				<required>true</required>
			</component>
		</invalidation>

	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/DNCParent1.jsp</name>
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test1</value>
				<value>test3</value>
			</component>
		</cache-id>
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test2</value>
			</component>
			<property name="consume-subfragments">true</property>
		</cache-id>
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test5</value>
			</component>
			<property name="consume-subfragments">true</property>
			<property name="do-not-consume">true</property>
		</cache-id>

		<dependency-id>
			DNC2
			<component id="test" type="parameter">
				<required>true</required>
			</component>
		</dependency-id>

		<invalidation>
			DNC2
			<component id="inv2" type="parameter">
				<required>true</required>
			</component>
		</invalidation>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/DNCChild1.jsp</name>
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test3</value>
			</component>
		</cache-id>
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test1</value>
				<value>test2</value>
				<value>test4</value>
				<value>test7</value>
			</component>
			<property name="do-not-consume">true</property>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test5</value>
			</component>
			<property name="consume-subfragments">true</property>
			<property name="do-not-consume">true</property>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test6</value>
			</component>
			<property name="EdgeCacheable">true</property>
			<property name="do-not-consume">true</property>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test10</value>
			</component>
			<property name="EdgeCacheable">true</property>
			<property name="do-not-consume">false</property>
		</cache-id>

		<dependency-id>
			DNC1
			<component id="test" type="parameter">
				<required>true</required>
			</component>
		</dependency-id>

		<invalidation>
			DNC1
			<component id="inv1" type="parameter">
				<required>true</required>
			</component>
		</invalidation>


	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/JSTLForwardServlet</name>
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test1</value>
			</component>
			<property name="consume-subfragments">true</property>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/JSTLChild1.jsp</name>
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test1</value>
			</component>
			<property name="do-not-consume">true</property>
		</cache-id>

		<dependency-id>
			JSTL1
			<component id="test" type="parameter">
				<required>true</required>
			</component>
		</dependency-id>

		<invalidation>
			JSTL1
			<component id="inv1" type="parameter">
				<required>true</required>
			</component>
		</invalidation>

	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/PreviewServlet</name>
		<property name="EdgeCacheable">true</property>
		<property name="consume-subfragments">true</property>
		<cache-id>
			<priority>3</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/PreviewChildServlet</name>
		<property name="EdgeCacheable">true</property>
		<cache-id>
			<priority>3</priority>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/IsUncacheable.jsp</name>
		<cache-id>
			<component id="cacheable" type="parameter">
				<required>true</required>
				<value>true</value>
			</component>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/Afpa.jsp</name>
		<property name="ExternalCache">afpa</property>
		<cache-id>
			<timeout>0</timeout>
		</cache-id>
	</cache-entry>





	<!-- CacheMonitor CachePolicies Test entries -->
	<cache-entry>
		<class>servlet  </class>
		<name>/CacheMonitorTestServletPolicy</name>
		<sharing-policy>shared-push</sharing-policy>
		<property name="EdgeCacheable">true</property>
		<property name="ExternalCache">CMTextCache</property>

		<cache-id>
			<component id="CMTparameter" type="parameter" />
			<component id="CMTsession" type="session" />
		</cache-id>

		<cache-id>
			<component id="CMTcookie" type="cookie" />
			<component id="CMTattribute" type="attribute" />
		</cache-id>

		<dependency-id>
			<component id="CMTparameterList" type="parameter-list" />
		</dependency-id>

		<invalidation>
			<component id="CMTservletPath" type="servletpath" />
		</invalidation>
	</cache-entry>

	<cache-entry>
		<class>command</class>
		<name>/CacheMonitorTestCommandPolicy</name>
		<sharing-policy>not-shared</sharing-policy>
		<property name="ApplicationName">CMTAppName</property>
		<property name="persist-to-disk">false</property>
		<property name="delay-invalidations">true</property>

		<cache-id>
			<component id="CMTmethod" type="method" />
		</cache-id>

		<cache-id>
			<component id="CMTfield" type="field" />
		</cache-id>

		<dependency-id>
			<component id="CMTmethod" type="method" />
		</dependency-id>

		<invalidation>
			<component id="CMTmethod" type="method" />
		</invalidation>

	</cache-entry>

	<cache-entry>
		<class>webservice</class>
		<name>/CacheMonitorTestWebservicePolicy</name>
		<sharing-policy>shared-push-pull</sharing-policy>
		<property name="consume-subfragments">true</property>
		<property name="do-not-consume">true</property>

		<cache-id>
			<component id="CMTSOAPEnvelope" type="SOAPEnvelope" />
			<component id="CMTSOAPAction" type="SOAPAction" />
		</cache-id>

		<cache-id>
			<component id="CMTserviceOperation" type="serviceOperation" />
			<component id="CMTserviceOperationParameter"
				type="serviceOperationParameter" />
		</cache-id>

		<dependency-id>
			<component id="CMTserviceOperation" type="serviceOperation" />
		</dependency-id>

		<invalidation>
			<component id="CMTSOAPEnvelope" type="SOAPEnvelope" />
		</invalidation>
	</cache-entry>

	<cache-entry>
		<class>portlet</class>
		<name>/CacheMonitorTestPortletPolicy</name>
		<sharing-policy>shared-pull</sharing-policy>
		<property name="save-attributes">false</property>

		<cache-id>
			<component id="CMTheader" type="header" />
		</cache-id>

		<cache-id>
			<component id="CMTlocale" type="locale" />
			<component id="CMTrequestType" type="requestType" />
		</cache-id>

		<dependency-id>
			<component id="CMTrequestType" type="requestType" />
		</dependency-id>

	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/RangeTimeStamp.jsp</name>


		<!-- valid specs, will be cached if they match -->
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeTest10</value>
			</component>
			<component id="inputvalue" type="parameter">
				<required>true</required>
				<value>9</value>
				<value>
					<range low="-20" high="-10" />
				</value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeTest11</value>
			</component>
			<component id="inputvalue" type="parameter">
				<required>true</required>
				<value>0</value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeTest20</value>
			</component>
			<component id="inputvalue" type="parameter">
				<required>true</required>
				<not-value>
					<range low="-20" high="-10" />
				</not-value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeTest21</value>
			</component>
			<component id="inputvalue" type="parameter">
				<required>true</required>
				<value>
					<range low="-50" high="200" />
				</value>
				<not-value>
					<range low="-20" high="-10" />
				</not-value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeTest22</value>
			</component>
			<component id="inputvalue" type="parameter">
				<required>true</required>
				<value>
					<range low="20" high="30" />
				</value>
				<not-value>
					<range low="0" high="50" />
				</not-value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeTest23</value>
			</component>
			<component id="inputvalue" type="parameter">
				<required>true</required>
				<value>
					<range low="0" high="30" />
				</value>
				<not-value>
					<range low="20" high="50" />
				</not-value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeTest24</value>
			</component>
			<component id="inputvalue" type="parameter">
				<required>true</required>
				<value>
					<range low="0" high="10" />
				</value>
				<value>
					<range low="20" high="30" />
				</value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeTest30</value>
			</component>
			<component id="inputvalue" type="parameter">
				<required>true</required>
				<value>
					<range low="12" high="50" />
					<range low="25" high="100" />
				</value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeTest31</value>
			</component>
			<component id="inputvalue" type="parameter">
				<required>true</required>
				<value>
					<range low="12" high="50" />
				</value>
				<value>
					<range low="25" high="100" />
				</value>

			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeTest32</value>
			</component>
			<component id="NoSuchParameterIsPresent" type="parameter">
				<value>
					<range low="12" high="50" />
				</value>
				<value>
					<range low="25" high="100" />
				</value>
				<required>false</required>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeTest33</value>
			</component>
			<component id="NoSuchParameterIsPresent" type="parameter">
				<required>true</required>
				<value>
					<range low="12" high="50" />
				</value>
				<value>
					<range low="25" high="100" />
				</value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeTest34</value>
			</component>
			<component id="NoSuchParameterIsPresent" type="parameter">
				<required>true</required>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeTest35</value>
			</component>
			<component id="inputvalue" type="parameter">
				<required>false</required>
				<value>requiredValue</value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<not-value>RangeTest36</not-value>
			</component>
			<component id="inputvalue" type="parameter">
				<required>false</required>
				<value>notThis</value>
			</component>
		</cache-id>

		<!--
			<dependency-id>
			test
			<component id="test" type="parameter">
			<required>true</required>
			</component>
			</dependency-id>
			<invalidation>
			test
			<component id="inv" type="parameter">
			<required>true</required>
			</component>
			</invalidation>
		-->

	</cache-entry>

	<!-- ############################################################ -->
	<cache-entry>
		<class>servlet  </class>
		<name>/RangeAttrChild.jsp</name>

		<!-- valid specs, will be cached if they match -->
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeAttrTest10</value>
			</component>
			<component id="RangeTestAttribute" type="attribute">
				<required>true</required>
				<value>9</value>
				<value>
					<range low="-20" high="-10" />
				</value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeAttrTest11</value>
			</component>
			<component id="RangeTestAttribute" type="attribute">
				<required>true</required>
				<value>0</value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeAttrTest20</value>
			</component>
			<component id="RangeTestAttribute" type="attribute">
				<required>true</required>
				<not-value>
					<range low="-20" high="-10" />
				</not-value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeAttrTest21</value>
			</component>
			<component id="RangeTestAttribute" type="attribute">
				<required>true</required>
				<value>
					<range low="-50" high="200" />
				</value>
				<not-value>
					<range low="-20" high="-10" />
				</not-value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeAttrTest22</value>
			</component>
			<component id="RangeTestAttribute" type="attribute">
				<required>true</required>
				<value>
					<range low="20" high="30" />
				</value>
				<not-value>
					<range low="0" high="50" />
				</not-value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeAttrTest23</value>
			</component>
			<component id="RangeTestAttribute" type="attribute">
				<required>true</required>
				<value>
					<range low="0" high="30" />
				</value>
				<not-value>
					<range low="20" high="50" />
				</not-value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeAttrTest24</value>
			</component>
			<component id="RangeTestAttribute" type="attribute">
				<required>true</required>
				<value>
					<range low="0" high="10" />
				</value>
				<value>
					<range low="20" high="30" />
				</value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeAttrTest30</value>
			</component>
			<component id="RangeTestAttribute" type="attribute">
				<required>true</required>
				<value>
					<range low="12" high="50" />
					<range low="25" high="100" />
				</value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeAttrTest31</value>
			</component>
			<component id="RangeTestAttribute" type="attribute">
				<required>true</required>
				<value>
					<range low="12" high="50" />
				</value>
				<value>
					<range low="25" high="100" />
				</value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeAttrTest32</value>
			</component>
			<component id="NO_SUCH_ATTRIBUTE" type="attribute">
				<value>
					<range low="12" high="50" />
				</value>
				<value>
					<range low="25" high="100" />
				</value>
				<required>false</required>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeAttrTest33</value>
			</component>
			<component id="NO_SUCH_ATTRIBUTE" type="attribute">
				<required>true</required>
				<value>
					<range low="12" high="50" />
				</value>
				<value>
					<range low="25" high="100" />
				</value>
			</component>
		</cache-id>

		<dependency-id>
			test
			<component id="test" type="parameter">
				<required>true</required>
			</component>
		</dependency-id>
		<invalidation>
			test
			<component id="inv" type="parameter">
				<required>true</required>
			</component>
		</invalidation>
	</cache-entry>


	<!-- ############################################################ -->

	<skip-cache-attribute>prettypleaseskipcaching</skip-cache-attribute>

	<cache-entry>
		<class>servlet  </class>
		<name>/SkipCache1.jsp</name>
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test01</value>
			</component>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/SkipCache2.jsp</name>
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test02</value>
			</component>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/SkipCacheChild1.jsp</name>
		<cache-id>
			<timeout>0</timeout>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/SkipCacheChild2.jsp</name>
		<cache-id>
			<timeout>0</timeout>
		</cache-id>
	</cache-entry>

	<!-- ############################################################ -->
	<cache-entry>
		<class>servlet  </class>
		<name>/CacheCookie1.jsp</name>
		<cache-id>
			<component id="test" type="parameter">
				<value>test01</value>
				<required>true</required>
			</component>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
		<dependency-id>
			test
			<component id="test" type="parameter">
				<required>true</required>
			</component>
		</dependency-id>
		<invalidation>
			test
			<component id="inv" type="parameter">
				<required>true</required>
			</component>
		</invalidation>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/CacheCookie2.jsp</name>
		<property name="store-cookies">
			true
			<exclude>cookie1</exclude>
		</property>
		<cache-id>
			<component id="test" type="parameter">
				<value>test02</value>
				<required>true</required>
			</component>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
		<dependency-id>
			test
			<component id="test" type="parameter">
				<required>true</required>
			</component>
		</dependency-id>
		<invalidation>
			test
			<component id="inv" type="parameter">
				<required>true</required>
			</component>
		</invalidation>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/CacheCookie3.jsp</name>
		<property name="store-cookies">
			false
			<exclude>cookie1</exclude>
		</property>
		<cache-id>
			<component id="test" type="parameter">
				<value>test03</value>
				<required>true</required>
			</component>
			<timeout>35</timeout>
			<priority>1</priority>
		</cache-id>
		<dependency-id>
			test
			<component id="test" type="parameter">
				<required>true</required>
			</component>
		</dependency-id>
		<invalidation>
			test
			<component id="inv" type="parameter">
				<required>true</required>
			</component>
		</invalidation>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/DoNotCacheParent.jsp</name>
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test01</value>
				<value>test02</value>
			</component>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>servlet  </class>
		<name>/DoNotCacheChild.jsp</name>

		<cache-id>
			<component id="test" type="parameter">
				<value>test01</value>
				<required>true</required>
			</component>
		</cache-id>
		<cache-id>
			<component id="test" type="parameter">
				<value>test02</value>
				<required>true</required>
			</component>
			<property name="do-not-cache">true</property>
		</cache-id>

	</cache-entry>

	<!-- ############################################################ -->
	<cache-entry>
		<class>servlet  </class>
		<name>/ConsumeSubfragmentsExcludeParent.jsp</name>

		<!-- Note: since the child jsps don't have their own
			cache-entry's, they should never be cached themselves,
			only as part of the parent result depending on this config -->
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test01</value>
			</component>
			<property name="consume-subfragments">
				true
				<exclude>/ConsumeSubfragmentsExcludeChild1.jsp</exclude>
			</property>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test02</value>
			</component>
		</cache-id>

		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test03</value>
			</component>
			<property name="consume-subfragments">true</property>
		</cache-id>
	</cache-entry>

	<!-- ############################################################ -->

	<cache-entry>
		<class>servlet  </class>
		<name>/static.jsp</name>
		<property name="consume-subfragments">true</property>
		<cache-id>
			<timeout>0</timeout>
		</cache-id>
	</cache-entry>
	<cache-entry>
		<class>static</class>
		<name>/static.html</name>
		<cache-id>
			<timeout>0</timeout>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>static</class>
		<name>
			com.ibm.ws.webcontainer.servlet.SimpleFileServlet.class
		</name>
		<cache-id>
			<component id="" type="pathinfo">
				<required>true</required>
			</component>
			<component id="useSFServlet" type="parameter">
				<required>true</required>
				<value>true</value>
			</component>
			<timeout>300</timeout>
		</cache-id>
	</cache-entry>

	<cache-entry>
		<class>static</class>
		<name>/static2.html</name>
		<cache-id>
			<timeout>0</timeout>
		</cache-id>
	</cache-entry>

  <cache-entry>
		<class>servlet  </class>
		<name>/MultiIncludeParamRemoteServlet</name>
		<property name="consume-subfragments">false</property>		
		<cache-id>
			<timeout>0</timeout>
			<component id="test" type="parameter">
				<required>true</required>
				<value>MultiIncludeParamRemoteServlet</value>
			</component>
		</cache-id>
 </cache-entry>

  <cache-entry>
		<class>servlet  </class>
		<name>/MultiIncludeParamRemoteServlet</name>
		<property name="consume-subfragments">false</property>		
		<cache-id>
			<timeout>0</timeout>
			<component id="test" type="parameter">
				<required>true</required>
				<value>MultiIncludeParamServlet</value>
			</component>
		</cache-id>
 </cache-entry>

  <cache-entry>
		<class>servlet  </class>
		<name>/RemoteServlet</name>
		<property name="consume-subfragments">false</property>
		<property name="do-not-consume">true</property>    
		<cache-id>
			<timeout>0</timeout>
		</cache-id>
 </cache-entry>
  
  <cache-entry>
		<class>servlet  </class>
		<name>/RemoteServlet2</name>
		<property name="consume-subfragments">true</property>
		<cache-id>
			<timeout>0</timeout>
		</cache-id>
 </cache-entry>

  <cache-entry>
		<class>servlet  </class>
		<name>/NonBlockingFragmentResponseServlet</name>
		<property name="consume-subfragments">true</property>		
		<cache-id>
			<timeout>0</timeout>
			<component id="test" type="parameter">
				<required>true</required>
				<value>NonBlockingFragmentResponseServlet</value>
			</component>
		</cache-id>
 </cache-entry>

  <cache-entry>
		<class>servlet  </class>
		<name>/BlockingFragmentResponseServlet</name>
		<property name="consume-subfragments">false</property>		
		<cache-id>
			<timeout>0</timeout>
			<component id="test" type="parameter">
				<required>true</required>
				<value>BlockingFragmentResponseServlet</value>
			</component>
		</cache-id>
  </cache-entry>
 
  <cache-entry>
      <class>servlet  </class>
      <name>/JSTLIKEA.jsp</name>
      <property name="consume-subfragments">true</property>
      <cache-id>
         <component id="test" type="parameter">
         	<required>true</required>
         	<value>test1</value>
         </component>              
      </cache-id>        
  </cache-entry> 
 </cache>

Icône indiquant le type de rubrique Rubrique de référence



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rdyn_cachespec
Nom du fichier : rdyn_cachespec.html