Arquivo cachespec.xml

O cache analisa o arquivo cachespec.xml quando o servidor é iniciado e extrai um conjunto de parâmetros de configuração de cada elemento cache-entry. Toda vez que um novo servlet ou outro objeto que pode ser armazenado em cache é inicializado, o cache tenta corresponder cada um dos elementos cache-entry para localizar as informações de configuração desse objeto.

Os elementos cache-entry podem estar dentro do elemento cache raiz ou dentro de um elemento cache-instance. As entradas de cache que estão no elemento raiz são armazenadas em cache com a instância de cache padrão. As entradas de cache que estão no elemento <instância-de-cache> são armazenadas em cache nessa instância de cache específica. Diferentes objetos que podem ser armazenados em cache têm diferentes elementos de classe. É possível definir o objeto específico ao qual uma política de cache se refere utilizando o elemento de nome.

Local

Coloque o arquivo cachespec.xml com o módulo de implementação. Utilize uma ferramenta de montagem para definir os objetos armazenáveis em cache. Consulte os tópicos sobre aplicativos de montagem. Você também pode colocar um arquivo cachespec.xml global no diretório de propriedades do servidor de aplicativos. Em situações em que há um arquivo global cachespec.xml no diretório de propriedades do situação, e um arquivo cachespec.xml em um aplicativo, as entradas nos dois arquivos cachespec.xml são mescladas. Se houver entradas conflitantes nos dois arquivos, as entradas no arquivo cachespec.xml que está no aplicativo substituem as entradas no arquivo global cachespec.xml desse aplicativo.

O arquivo cachespec.dtd está disponível no diretório de propriedades do servidor de aplicativos. O arquivo cachespec.dtd define a estrutura legal e os elementos que podem estar em seu arquivo cachespec.xml.

Notas sobre a Utilização

Elementos de cachespec.xml
O elemento raiz do arquivo cachespec.xml é cache e contém os elementos cache-instance e cache-entry. Os elementos cache-entry também podem ser colocados dentro de elementos cache-instance para tornar essa entrada de cache parte de uma instância de cache diferente da padrão.
cache-instance
<cache-instance name="cache_instance_name"></cache-instance>

O atributo de nome é o nome de JNDI (Java™ Naming and Directory Interface) da instância de cache que é definida no console administrativo.

Cada elemento cache-instance deve conter pelo menos um elemento cache-entry. Uma entrada de cache que é correspondida em um elemento cache-instance é armazenada na instância de cache do servlet especificada pelo atributo name. Se existirem elementos cache-entry idênticos em vários elementos cache-instance, o primeiro elemento cache-entry correspondido será utilizado.

cache-entry
Cada entrada de cache deve especificar certas informações básicas que o cache dinâmico utiliza para processar essa entrada. Esta seção explica a função de cada elemento de entrada de cache do arquivo cachespec.xml, incluindo:
  • Classe
  • nome
  • sharing-policy
  • skip-cache
  • Propriedade
  • cache-id

Com a versão atual do WebSphere Application Server, você pode definir diversas políticas de cache para um único servlet. Por exemplo, se você definir vários mapeamentos para um servlet no arquivo web.xml, poderá criar uma entrada de cache para cada um dos mapeamentos.

Classe

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

Este elemento é exigido e especifica como o servidor de aplicativos interpreta o restante da definição da política de cache. O valor servlet se refere a servlets e arquivos JSP (JavaServer Pages) implementados no mecanismo de servlet do WebSphere Application Server. A classe webservice estende o servlet com tipos de componente especiais para solicitações de serviços da Web. O JAXRPCClient é usado para definir uma entrada de cache para o cache do cliente de serviços da Web. O valor, command, se refere às classes que utilizam o modelo de programação de comando do WebSphere Application Server. O valor, static, se refere a arquivos que contêm conteúdo estático. Os exemplos a seguir ilustram o elemento class:

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

<nome>name</name>

Utilize as diretrizes a seguir para o elemento name para especificar um objeto armazenável em cache:
  • Para os comandos, este elemento necessário deve incluir o nome do pacote, se existir, e o nome de classe, incluindo um .\class final, do objeto configurado.
    Importante: Se você especificar um armazenamento em cache de comandos no arquivo cachespec.xml e o armazenamento em cache do servlet não estiver ativado para o servidor de aplicativos no qual o aplicativo é executado, você obterá um erro. O servidor de aplicativos ainda tentará obter uma instância de cache, portanto, ativar o armazenamento em cache do servlet eliminará o erro.
  • Para servlets e arquivos JSP, se o arquivo cachespec.xml estiver no diretório de propriedades do WebSphere Application Server, esse elemento obrigatório deverá incluir o URI completo do arquivo JSP ou do servlet no cache. Para os servlets e arquivos JSP, se o arquivo cachespec.xml estiver no aplicativo da Web, esse elemento necessário poderá ser relativo à raiz de contexto de aplicativo da Web específico.
  • Para os serviços da Web, inclua o Identificador de Recursos Universal (URI) do roteador Simple Object Access Protocol (SOAP) que está associado ao serviço da Web que deseja armazenar em cache.
  • Para o cache de cliente de serviços da Web, o nome é o terminal de destino do serviço da Web armazenável em cache ou o URI do roteador SOAP que esteja associado ao serviço da Web armazenável em cache. É possível usar o local de endereço SOAP no arquivo Web Services Description Language para definir o nome para o cache de cliente de serviços da Web.
  • Para arquivos estáticos, se o arquivo cachespec.xml estiver no diretório de propriedades do WebSphere Application Server, esse elemento obrigatório deverá incluir o URI completo do arquivo no cache. Se o arquivo cachespec.xml estiver no aplicativo da Web, esse elemento necessário poderá ser relativo à raiz de contexto de aplicativo da Web específico. Para um aplicativo da Web com uma raiz de contexto, a política de cache para arquivos que usam a classe estática deve ser especificada no aplicativo da Web e não no diretório de propriedades.
  • Para portlets, se o arquivo cachespec.xml estiver no diretório de propriedades do WebSphere Application Server, esse elemento obrigatório deverá incluir o caminho de contexto completo e o nome do portlet no cache. Se o arquivo cachespec.xml estiver no aplicativo da Web, esse elemento necessário será o nome do portlet que é relativo à raiz de contexto de aplicativo da Web específico.
Dica: O local preferido do arquivo cachespec.xml está no aplicativo da Web e não o diretório de propriedades.

É possível especificar vários elementos name dentro de um cache-entry se houver diferentes mapeamentos que fazem referência ao mesmo servlet.

Os exemplos a seguir ilustram o elemento name:
<name>com.mycompany.MyCommand.class</name>
<name>default_host:/servlet/snoop</name>
<name>com.mycompany.beans.MyJavaBean</name>  
<name>mywebapp/myjsp.jsp</name>
<name>/soap/servlet/soaprouter</name>
<name>http://remotecompany.com:9080/service/getquote</name>
<name>mywebapp/myLogo.gif</name>
sharing-policy

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

Ao trabalhar em um cluster com um cache distribuído, estes valores determinam as características de compartilhamento de entradas criadas a partir desse objeto. Se este elemento não estiver presente, assume-se um valor no-shared.[AIX Solaris HP-UX Linux Windows] Em ambientes de servidor único, no-shared é o único valor válido. [z/OS]Na plataforma z/OS, você pode ativar a replicação entre os servants em um servidor de aplicativos base utilizando as propriedades customizadas DynacacheEnableUnmanagedServerReplication e DynacacheUnmanagedServerReplicationType da JVM (Java Virtual Machine). Ao ativar uma replicação, o valor padrão é not-shared . Essa propriedade não afeta a distribuição para processadores Edge Side Include através da propriedade de armazenamento em cache do fragmento Edge.

[AIX Solaris HP-UX Linux Windows][z/OS]Consulte o artigo Configurando Replicação do Cache para obter mais informações.

Tabela 1. Valores da Política de Compartilhamento. Valores e descrição da política de compartilhamento.
Valor Description
not-shared As entradas em cache para esse objeto não são compartilhadas entre servidores de aplicativos diferentes. Essas entradas podem conter dados não seriáveis. Por exemplo, um servlet armazenado no cache pode colocar objetos não serializáveis nos atributos do pedido, se o tipo de <class> o suportar.
Evitar Problemas Evitar Problemas: O servidor de aplicativos sempre replicará as entradas de invalidação. Elas não são afetadas pela política de compartilhamento.gotcha
shared-push As entradas de cache para esse objeto são distribuídas automaticamente para os caches dinâmicos em outros servidores de aplicativos ou nas JVMs (Java Virtual Machines) auxiliares. Cada cache tem uma cópia da entrada no momento em que é criada. Essas entradas não podem armazenar dados não-serializáveis.
shared-pull As entradas em cache desse objeto são compartilhadas entre servidores de aplicativos quando solicitado. Se um servidor de aplicativos obtiver uma perda de cache para esse objeto, consultará os servidores de aplicativos que cooperam para verificar se têm o objeto. Se nenhum servidor de aplicativos tiver uma cópia armazenada em cache do objeto, o servidor de aplicativos original executará o pedido e gerará o objeto. Essas entradas não podem armazenar dados não serializáveis. Esse modo de compartilhamento não é recomendado.
shared-push-pull As entradas em cache desse objeto são compartilhadas entre servidores de aplicativos quando solicitado. Quando um servidor de aplicativos gera uma entrada de cache, ele difunde o ID do cache da entrada criada para todos os servidores de aplicativos cooperativos. Cada servidor saberá então se existe uma entrada para qualquer ID de cache dado. Em um determinado pedido para essa entrada, o servidor de aplicativos sabe se deve gerar a entrada ou extraí-la de outro lugar. Essas entradas não podem armazenar dados não-serializáveis.
O exemplo a seguir mostra um critério de compartilhamento:
<sharing-policy>not-shared</sharing-policy>
skip-cache
Utiliza o nome de um atributo de pedido que, se existente no contexto do pedido, determina que a resposta não pode ser recuperada da instância de cache especificada. Essa propriedade é útil para visualizar o conteúdo em sistemas de produção e verificar se o aplicativo está funcionando e executando conforme esperado.
<cache>
	<skip-cache-attribute>att1</skip-cache-attribute>	<!–Aplica-se apenas ao cache base- ->
...
<cache-instance name="instance1">
<skip-cache-attribute>att2</skip-cache-attribute> <!-Aplica-se apenas a esta instância- ->
...
</cache-instance>
</cache>
Propriedade

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

em que key é o nome da propriedade para este elemento de entrada de cache e value é o valor correspondente.

É possível definir propriedades opcionais em um objeto que pode ser armazenado em cache, tais como uma descrição do servlet configurado. A classe determina propriedades válidas da entrada de cache. Atualmente, as seguintes propriedades estão definidas:

Tabela 2. Valores da Propriedade. Valores da propriedade e classes válidas.
Propriedade Classes válidas Valor
ApplicationName Todas Substitui o ID do aplicativo JavaEEName para que vários aplicativos possam compartilhar um único namespace do ID de cache.
EdgeCacheable Servlet True ou false. O padrão é false. Se a propriedade for true, o servlet ou arquivo JSP fornecido será solicitado externamente de um processador Edge Side Include. Se o servlet ou arquivo JSP pode ou não ser armazenado em cache depende do resto da especificação de cache.

Os componentes permitidos para entradas gerais armazenadas em cache são PARAMETER, HEADER, COOKIE e PATH_INFOSERVLET_PATH

ExternalCache Servlet e portlet Especifica o nome do cache externo. O nome do cache externo precisa corresponder ao nome do grupo de cache externo.
consume-subfragments Servlet, serviço da Web ou portlet True ou false. O padrão é false. Quando um servlet é armazenado em cache, apenas o conteúdo desse servlet é armazenado, e inclui marcadores para quaisquer outros fragmentos para os quais ele inclui ou encaminha. CSF (consume-subfragments) diz ao cache para não parar de salvar conteúdo quando ele inclui um servlet filho. A entrada pai, a que é marcada como CSF, inclui todo o conteúdo de todos os fragmentos em sua entrada de cache, resultando em uma grande entrada de cache que não tem inclusões nem encaminhamentos, mas o conteúdo da toda a árvore de entradas. O Consume-subfragments pode poupar uma quantidade significativa de processamento do servidor de aplicativos mas, em geral, só é útil quando o pedido HTTP externo contém todas as informações necessárias para determinar toda a árvore de fragmentos incluídos.
Utilize o elemento <exclude> para indicar ao cache para parar de consumir o fragmento excluído e, em vez disso, criar um sinalizador de substituição para a inclusão ou o avanço. Por exemplo, exclua A.jsp do consume-subfragment, conforme a seguir:
<property name="consume-sbufragments">true
<exclude>/A.jsp<exclude>
</property>
do-not-consume Servlet, serviço da Web ou portlet True ou false. O padrão é false. Quando um fragmento-pai possui uma propriedade consume-subfragment definida como true, o conteúdo do fragmento-filho é salvo na entrada de cache do pai. DNC (Do-not-consume) informa ao cache para parar de salvar o conteúdo para esse fragmento na entrada de cache pai e criar um marcador em substituição para a inclusão ou redirecionamento.
alternate_url Servlet Especifica a URL alternativa utilizada para chamar o servlet ou arquivo JSP. A propriedade é válida apenas se a propriedade EdgeCacheable também for definida para a entrada de cache.
persist-to-disk Todas True ou false. O padrão é true. Quando essa propriedade é configurada como false, a entrada de cache não é gravada no disco quando ocorre estouro ou parada do servidor.
save-attributes Servlet e portlet True ou false. O padrão é true. Quando essa propriedade é configurada como false, os atributos de pedido não são salvos com a entrada de cache.
Utilize o elemento <excluir> para especificar os atributos do pedido que não se aplicam à propriedade save-attributes. Por exemplo, para salvar apenas o atributo attr1 com a entrada de cache:
<property name=
  "save-attributes">false
<exclude>attr1</exclude>
</property>

Para salvar todos os atributos exceto o atributo attr1 na entrada de cache, defina a propriedade como true na amostra precedente. Se você não usar o elemento <excluir>, todos ou nenhum dos atributos de pedido serão salvos com a entrada de cache.

delay-invalidations Command True ou false. Quando essa propriedade é configurada como true, os comandos que estão invalidando os objetos em cache com base nas regras de invalidação dessa entrada de cache invalidam as entradas de cache após a execução. Por padrão, a invalidação ocorre antes que o comando seja executado.
store-cookies Servlet e portlet Ativado ou desativado. O padrão é On. Esta propriedade usa um ou mais nomes de cookies como seu argumento, que é salvo no objeto de cache e restaurado pelo cache de servlet na resposta com um cabeçalho set-cookie.
Salve todos os cookies, exceto cookie1, como parte de cache-entry, conforme a seguir:
<property name="store-cookies">true
<exclude>cookie</exclude>
</property>
Salve apenas cookie1 como parte de cache-entry, conforme a seguir:
<property name="store-cookies">false
<exclude><cookie1</exclude>
</property>
ignore-get-post Servlet e portlet True ou false. O padrão é false. Quando a propriedade é configurada como true, o tipo de pedido não é anexado ao cache-id para pedidos GET e POST, a menos que o subelemento do componente requestType esteja definido. Por padrão, o tipo de pedido é anexado automaticamente ao cache-id para pedidos GET e POST.
ignore-char-encoding Servlet e portlet True ou false. O valor padrão é false. Se a propriedade estiver configurada paratrue, a codificação de caracteres UTF-8 não será anexada no ID do cache. Anexar a codificação de caracteres UTF-8 no ID do cache poderá resultar em várias cópias de fragmentos, que aumenta desnecessariamente o tamanho do cache.
do-not-cache Servlet e portlet Define um fragmento que não é armazenado em cache nem consumido por seu pai.
<cache-entry>
...
<property name="do-not-cache">true</property>
ou
<cache-id>
<property name="do-not-cache">true</property>
</cache-id>
</cache-entry>
cache-id
Para armazenar um objeto em cache, o servidor de aplicativos deve saber como gerar um ID exclusivo para chamadas diferentes do objeto. Esses IDs são criados do código Java escrito pelo usuário ou das regras definidas na política de cache de cada entrada de cache. Cada entrada de cache pode ter várias regras de ID de cache que são executadas em ordem até que:
  • Um regra retorne um ID de cache não vazio ou
  • Não exista mais nenhuma regra para ser executada.
Se nenhuma das regras de geração de ID de cache produzir um ID de cache válido, o objeto não será armazenado no cache.
Cada elemento cache-id define uma regra para armazenar em cache um objeto e é composto por subelementos component, timeout, inactivity, priority, property, idgenerator e metadatagenerator. O exemplo a seguir ilustra um elemento cache-id:
<cache-id>
   component*| timeout? | inactivity? | priority? | property* | idgenerator? | metadatagenerator?
</cache-id>
Subelemento component

Utilize o subelemento component para gerar uma parte do ID de cache. O subelemento component consiste nos atributos id, type e ignore-value e nos elementos index, method, field, required, value e not-value.

  • Utilize o atributo id para identificar o componente.
  • Utilize o atributo type para identificar o tipo de componente. A tabela a seguir mostra os valores para type.
    Evitar Problemas Evitar Problemas: Quando o subelemento do componente de parâmetro é especificado no arquivo cachespec.xml, o contêiner da Web configura a codificação de caractere com base na configuração de codificação obtida a partir do objeto da solicitação. Subsequentemente, se um servlet chamar o método setCharacterEncoding, o método não terá efeito, porque a codificação de caracteres não poderá ser alterada se já tiver sido configurada.gotcha
    Tabela 3. Valores de Tipo. Classes válidas e significado de tipo.
    Type Classes válidas Significado
    method Command Chama o método indicado no comando ou objeto
    field Command Recupera o campo nomeado no comando ou objeto
    parameter Servlet e portlet Recupera o valor do parâmetro nomeado a partir do objeto da solicitação.
    parameter-list Servlet e portlet Recupera uma lista de valores do parâmetro nomeado
    Evitar Problemas Evitar Problemas: O cache captura os valores de todos os parâmetros com esse nome e usa todos esses valores, na ordem em que são capturados, para criar o ID do cache gotcha
    Sessão Servlet e portlet Recupera o valor nomeado da sessão HTTP
    cookie Servlet Recupera o valor de cookie nomeado
    attribute Servlet e portlet Recupera o atributo de pedido nomeado
    header Servlet, serviço da Web e portlet Recupera o cabeçalho de pedido nomeado
    pathInfo Servlet Recupera o elemento pathInfo do pedido
    servletpath Servlet Recupera o caminho do servlet
    código do idioma Servlet e portlet Recupera o locale do pedido
    Atenção: O componente locale é permitido apenas para entradas armazenadas em cache, ao usar o RRD. O componente locale não é válido para todas as outras versões do ESI.
    requestType Servlet e portlet Recupera o método de pedido HTTP a partir do pedido.
    Atenção: O componente requestType é permitido apenas para entradas armazenadas em cache, ao usar o RRD. O componente requestType não é válido para todas as outras versões do ESI.
    tiles_attribute Servlet e portlet Recupera o valor de um atributo a partir de um modo lado a lado.
    SOAPEnvelope Serviço da Web e cache de cliente de serviços da Web Recupera o elemento SOAPEnvelope a partir de uma solicitação de serviços da Web. Um atributo de ID de Hash utiliza um Hash do elemento SOAPEnvelope, enquanto Literal utiliza o elemento SOAPEnvelope como foi recebido.
    SOAPAction serviço da Web Recupera o cabeçalho SOAPAction, se disponível, para a solicitação de serviços da Web.
    serviceOperation serviço da Web Recupera a operação de serviço para uma solicitação de serviço da Web.
    serviceOperationParameter serviço da Web Recupera o parâmetro especificado a partir de uma solicitação de serviço da Web.
    operação Cache de Cliente de Serviços da Web Indica um tipo de operação no arquivo WSDL (Web Services Description Language). O atributo id é ignorado e o valor é o nome da operação ou do método. Se o namespace da operação for especificado, o formate o valor como namespaceOfOperation:nameOfOperation.
    part Cache de Cliente de Serviços da Web Indica uma parte da mensagem de entrada no arquivo WSDL ou um parâmetro de pedido. Seu atributo id é o nome da parte ou do parâmetro e o valor é o valor da parte ou do parâmetro.
    SOAPHeaderEntry Cache de Cliente de Serviços da Web Recupera informações especiais no cabeçalho Simple Object Access Protocol (SOAP) da solicitação de serviços da Web. O atributo id especifica o nome da entrada. Além disso, a entrada do cabeçalho SOAP no pedido SOAP deve ter o atributo actor, que contém com.ibm.websphere.cache. Por exemplo:
    <soapenv:Header>
    	<getQuote soapenv:actor="com.ibm.websphere.cache">IBM</getQuote>
    </soapenv:Header>
    portletSession Portlet Recupera o valor nomeado da sessão de portlet
    portletWindowId Portlet Recupera o ID da janela do portlet a partir do objeto do pedido de portlet
    portletMode Portlet Recupera o modo do portlet a partir do objeto do pedido de portlet
    portletWindowsState Portlet Recupera o estado da janela do portlet a partir do objeto do pedido de portlet
    sessionID Servlet e portlet Recupera o ID de sessão HTTP
  • Utilize o atributo ignore-value para especificar se deve ou não usar o valor retornado por esse componente nas informações de ID de cache. Esse atributo é opcional com um valor padrão de false. Se o valor for true, somente o ID do componente será utilizado ao criar um ID de cache ou não será utilizada saída ao criar um ID de dependência ou de invalidação.
  • Utilize o elemento method para chamar um método nulo de um objeto retornado. É possível aninhar indefinidamente objetos de método e de campo em qualquer combinação. O método deve ser público e não é válido para componentes armazenáveis em cache na borda. Exemplo:
    <component id="getUser" type="method"><method>getUserInfo
    <method>getName</method></method></component>

    Esse método é equivalente a getUser().getUserInfo().getName()

    Para os tipos de componentes attribute, method ou field que podem retornar um objeto, quando o objeto retornado for uma coleta ou matriz, o ID será criado com uma lista separada por vírgulas dos elementos na coleta ou matriz. Por exemplo, se os usuários de atributo de pedido retornarem uma matriz [a, b] a entrada de cache será definida como o seguinte exemplo:
    <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>
    O ID de cache contém a cadeia users: a,b. O ID de dependência é dep: a,b.
    Utilize o atributo multipleIDs com os tipos de componentes para especificar e gerar vários IDs de dependência (ou IDs de invalidação) com base nos itens da coleta ou matriz. Por exemplo:
    <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>
    A política de cache gerará os seguintes IDs de dependência:
    • dep:a,b
    • dep:a
    • dep:b
    Use o elemento de índice com o tipo de componente anterior para incluir somente o valor do elemento na posição do índice especificada na coleção ou matriz, para o ID que está sendo criado.
    <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>
    A política de cache anterior gera o seguinte componente para ser utilizado no ID de cache: users: b. Utilize o elemento <method> para chamar um método nulo de um objeto retornado.
  • Utilize o elemento field para acessar um campo em um objeto retornado. É possível aninhar indefinidamente objetos de método e de campo em qualquer combinação. O campo deve ser público. Esse campo não é válido para componentes armazenáveis em cache na borda. Exemplo:
    <component id="getUser" type="method"><method>getUserInfo
    <field>name</field></method></component>

    Esse método é equivalente ao método getUser().getUserInfo().name.

  • Utilize o elemento required para especificar se esse componente deve retornar um valor não nulo para esse ID de cache para representar um cache válido. Se for definido como true, o componente deve retornar um valor não-nulo para que este ID de cache represente um ID de cache válido. Se for definido como false, o padrão, um valor não-nulo será utilizado na formação do ID de cache e um valor nulo significa que o componente não será utilizado na formação do ID. Por exemplo:
    <required>true</required>
  • Utilize o elemento value para especificar valores que devem corresponder para usar esse componente na formação do ID de cache. Por exemplo:
    <component id="getUser" type="method"><value>blue</value> 
    <value>red</value> </component>
  • Utilize o elemento not-value para especificar valores que não devem corresponder para usar esse componente na formação do ID de cache. Esse método é similar ao elemento value, mas ao contrário, prescreve os valores definidos do armazenamento em cache. É possível usar vários elementos not-value quando existe mais de um valor inválido. Por exemplo:
    <component id="getUser" type="method">
    <required>true</required>
    <not-value>blue</not-value>
    <not-value>red</not-value></component>
O subelemento component pode ter um elemento method e um elemento field, um elemento value ou um elemento not-value. Os elementos method e field se aplicam apenas a comandos. O exemplo a seguir ilustra os atributos de um subelemento do componente:
<component id="isValid" type="method" ignore-value="true"><component>
Subelemento timeout
O subelemento timeout é utilizado para especificar um valor absoluto TTL (Time-To-Live) para a entrada de cache. Por exemplo,
<timeout>valor</timeout>

em que value é o período de tempo, em segundos, para manter a entrada de cache. As entradas de cache na memória são mantidas indefinidamente, enquanto as entradas permanecerem na memória. As entradas de cache armazenadas em disco serão excluídas se não forem acessada no período de 24 horas.

Subelemento inactivity
O sub-elemento inactivity é utilizado para especificar um valor TTL (Time-To-Live) para a entrada de cache com base na última vez em que a entrada de cache foi acessada. É um subelemento do elemento cache-id.
<inactivity>value</inactivity>
em que value é o período de tempo, em segundos, para manter a entrada de cache no cache depois que o último cache for acessado.
Subelemento priority
Utilize o subelemento priority para especificar a prioridade de uma entrada de cache. O peso de priority é utilizado pelo algoritmo LRU (Utilizado menos Recentemente) do cache para decidir quais entradas deverão ser removidas do cache se ele ficar sem espaço de armazenamento. Por exemplo:
<priority>valor</priority>

em que value é um número inteiro positivo entre 1 e 16, inclusive.

Exemplos
A amostra a seguir mantém a entrada de cache no cache por, no mínimo, 35 segundos e, no máximo, 180 segundos. Se a entrada de cache for acessada em cada período de inatividade de 35 segundos, o período de inatividade será estendido por outros 35 segundos. No entanto, como o elemento timeout também está configurado, a entrada de cache sempre será invalidada após 180 segundos. Se a entrada de cache não for acessada no período de 35 segundos, a entrada será removida do cache.
<cache-id>
	<component id="timeout" type="parameter">
		<required>true</required>
	</component>
	<timeout>180</timeout>
	<inactivity>35</inactivity>
	<priority>1</priority>
</cache-id>
A amostra a seguir mantém a entrada de cache no cache por, no mínimo, 600 segundos. Se a entrada de cache for acessada em cada período de 600 segundos, o período de inatividade será estendido por outros 600 segundos. Se a entrada de cache não for acessada no período de 600 segundos, a entrada de cache será removida do cache.
<cache-id>
	<component id="timeout" type="parameter">
		<required>true</required>
	</component>
	<inactivity>600</inactivity>
	<priority>1</priority>
</cache-id>
Na amostra a seguir, o valor para a inatividade não terá significado porque o período do tempo limite é inferior ao período de inatividade. A entrada de cache é sempre invalidada após 180 segundos, independentemente da frequência em que a entrada de cache é acessada.
<cache-id>
	<component id="timeout" type="parameter">
		<required>true</required>
	</component>
	<timeout>180</timeout>
	<inactivity>600</inactivity>
	<priority>1</priority>
</cache-id>
Subelemento property
Utilize o subelemento property para especificar propriedades genéricas para a entrada de cache. Por exemplo:
<property name="key">value</property>

em que key é o nome da propriedade a ser definida e value é o valor correspondente.

Por exemplo:
<property name="description">The Snoop Servlet</property>
Tabela 4. Valores de Subelemento de Propriedade. Classes válidas e propósito da propriedade.
Propriedade Classes válidas Significado
sharing-policy/timeout/priority Todas Substitui as definições para a entrada de cache continente quando o pedido corresponder a este ID de cache.
EdgeCacheable Servlet Substitui as definições para a entrada de cache continente quando o pedido corresponder a este ID de cache.

Subelementos idgenerator e metadatagenerator

Utilize o elemento idgenerator para especificar o nome da classe carregado para a geração do ID de cache. O elemento IdGenerator deve implementar a interface com.ibm.websphere.servlet.cache.IdGenerator para um servlet ou a interface com.ibm.websphere.webservices.IdGenerator para o cache de cliente de serviços da Web. Segue um exemplo do elemento idgenerator:
<idgenerator> class name </idgenerator>
Em que nome da classe é o nome completo da classe a ser utilizada. Defina esta classe do gerador em uma biblioteca compartilhada.
Utilize o elemento metadatagenerator contido no elemento cache-id para especificar o nome da classe carregada para a geração de metadados. A classe MetadataGenerator deve implementar a interface com.ibm.websphere.servlet.cache.MetadataGenerator para um servlet ou a interface com.ibm.websphere.webservices.MetadataGenerator para um cache de cliente de serviços da Web. A classe MetadataGenerator define propriedades como tempo limite, inatividade, propriedades de armazenamento em cache externo ou dependências. Este é um exemplo do elemento metadatagenerator:
<metadatagenerator> classname </metadatagenerator>
Neste exemplo, o nome da classe é o nome completo da classe a ser utilizada. Defina esta classe do gerador em uma biblioteca compartilhada.

Elemento dependency-id

Utilize o elemento dependency-id para especificar identificadores de cache adicionais que associam várias entradas de cache ao mesmo identificador do grupo.

O valor do elemento dependency-id é gerado pela concatenação da cadeia base do ID de dependência com os valores retornados por seus elementos de componentes. Se um componente requerido retornar um valor nulo, toda a dependência não serão será gerada e não será utilizada. Valide os IDs de dependência explicitamente utilizando a API de cache dinâmico, ou utilize o elemento invalidation. Várias regras de IDs de dependência podem existir em um elemento de entrada de cache. Todas as regras de dependência são executadas separadamente.

Elemento invalidation

Para invalidar objetos armazenados em cache, o servidor de aplicativos deve gerar IDs de invalidação exclusivos. Crie IDs de invalidação escrevendo código Java customizado ou utilizando regras definidas na política de cache de cada entrada de cache. O exemplo a seguir ilustra uma invalidação na política de cache:
<invalidation>component* | invalidationgenerator? </invalidation>

Subelemento invalidationgenerator

O elemento invalidationgenerator é usado apenas com o cache de cliente de serviços da Web. Utilize o elemento invalidationgenerator para especificar o nome da classe a ser carregada para a geração de IDs de invalidação. A classe InvalidationGenerator deve implementar a interface com.ibm.websphere.cache.webservices.InvalidationGenerator. Um exemplo do elemento invalidationgenerator é o seguinte:
<invalidationgenerator>class name</invalidationgenerator>
Neste exemplo, classname é o nome completo da classe que implementa a interface com.ibm.websphere.cache.webservices.InvalidationGenerator. Defina esta classe do gerador em uma biblioteca compartilhada.

Exemplo de um Arquivo 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">
			falso
			<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">
			verdadeiro
			<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">
			falso
			<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">
			verdadeiro
			<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">
			falso
			<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>

		<!-- Obs.: como os jsps filhos não possuem suas próprias
			entradas de cache, elas não devem ser armazenadas em cache,
			apenas como parte do resultado pai, dependendo desta configuração -->
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test01</value>
			</component>
			<property name="consume-subfragments">
				verdadeiro
				<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>

Ícone que indica o tipo de tópico Tópico de Referência



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rdyn_cachespec
Nome do arquivo: rdyn_cachespec.html