Datei "cachespec.xml"

Der Cache führt eine Syntaxanalyse für die Datei cachespec.xml beim Start durch und extrahiert aus jedem Element "cache-entry" eine Reihe von Konfigurationsparametern. Anschließend versucht der Cache jedes Mal, wenn ein neues Servlet oder ein anderes cachefähiges Objekt initialisiert wird, dieses Servlet mit jedem der cache-entry-Elemente abzugleichen, um die Konfigurationsdaten für dieses Objekt zu ermitteln.

Die cache-entry-Elemente können in einem Stammelement "cache" oder in einem Element "cache-instance" enthalten sein. Cacheeinträge im Stammelement "cache" werden in der Standardcacheinstanz zwischengespeichert. Cacheeinträge im Element <cache-instance> werden in dieser Cacheinstanz zwischengespeichert. Im Cache speicherbare Objekte haben unterschiedliche class-Elemente. Sie können das jeweilige Objekt, auf das eine Cacherichtlinie verweist, mit dem Element "name" definieren.

Position

Kopieren Sie die Datei cachespec.xml mit dem Implementierungsmodul. Verwenden Sie für die Definition der cachefähigen Objekte ein Assembliertool. Nähere Informationen finden Sie in den Artikeln zum Assemblieren von Anwendungen. Sie können auch eine globale Datei cachespec.xml in das Eigenschaftsverzeichnis (properties) des Anwendungsservers kopieren. Wenn eine globale Datei cachespec.xml im Eigenschaftsverzeichnis (properties) des Anwendungsservers existiert und eine Datei cachespec.xml in einer Anwendung, werden die Einträge dieser beiden Dateien zusammengeführt. Wenn in den beiden Dateien widersprüchliche Einträge enthalten sind, haben die Einträge der Datei cachespec.xml in der Anwendung Priorität vor den Einträgen in der globalen Datei cachespec.xml für die betreffende Anwendung.

Die Datei cachespec.dtd befindet sich im Verzeichnis "properties" des Anwendungsservers. Die Datei cachespec.dtd definiert die gültige Struktur und die Elemente, die in der Datei cachespec.xml angegeben werden können.

Verwendungshinweise

Elemente in Cachespec.xml
Das Stammelement der Datei cachespec.xml ist "cache" und enthält die Elemente "cache-instance" und "cache-entry". Die cache-entry-Elemente können auch in cache-instance-Elementen verwendet werden, um diesen Cacheeintrag einer Cacheinstanz als der Standardinstanz zuzuordnen.
cache-instance
<cache-instance name="cache_instance_name"></cache-instance>

Das Namensattribut gibt den JNDI-Namen (Java™ Naming and Directory Interface) der Cacheinstanz an, der in der Administrationskonsole definiert wird.

Jedes Element "cache-instance" muss mindestens ein Element "cache-entry" enthalten. Ein Cacheeintrag, der dem Element "cache-instance" entspricht, wird in der Servlet-Cache-Instanz zwischengespeichert, die mit dem Namensattribut angegeben ist. Falls mehrere cache-instance-Elemente dieselben cache-entry-Elemente enthalten, wird das erste übereinstimmende Element "cache-entry" verwendet.

cache-entry
Jeder Cacheeintrag muss bestimmte grundlegende Informationen enthalten, die der dynamische Cache zur Verarbeitung dieses Eintrags verwendet. In diesem Abschnitt wird die Funktion der einzelnen Cacheeintragselemente der Datei cachespec.xml erläutert:
  • class
  • name
  • sharing-policy
  • skip-cache
  • property
  • cache-id

In der aktuellen Version von WebSphere Application Server können Sie für ein Servlet mehrere Cacherichtlinien definieren. Wenn Sie beispielsweise mehrere Zuordnungen für ein Servlet in der Datei web.xml definieren, können Sie einen Cacheeintrag für jede dieser Zuordnungen erstellen.

class

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

Dieses Element ist erforderlich und bestimmt, wie der Anwendungsserver die übrige Cacherichtliniendefinition interpretiert. Der Wert servlet bezieht sich auf Servlets und JSP-Dateien (JavaServer Pages), die in der WebSphere Application Server-Servlet-Engine implementiert sind. Die Klasse webservice erweitert das Servlet um spezielle Komponententypen für Anforderungen von Web-Services. Der Typ JAXRPCClient wird verwendet, um einen Cacheeintrag für den Web-Service-Client-Cache zu definieren. Der Wert command bezieht sich auf Klassen, die das Programmiermodell für WebSphere Application Server-Befehle verwenden. Der Wert static bezieht sich auf Dateien, die statischen Inhalt enthalten. Die folgenden Beispiele veranschaulichen die Verwendung des Elements "class":

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

<name>Name</name>

Verwenden Sie die folgenden Richtlinien für das Element "name", um ein cachefähiges Objekt anzugeben:
  • Bei Befehlen muss dieses erforderliche Element den Paketnamen und, falls vorhanden, den Klassennamen einschließlich der abschließenden Zeichenfolge .\class des konfigurierten Objekts enthalten.
    Wichtig: Wenn Sie das Befehls-Caching in der Datei "cachespec.xml" angeben und das Servlet-Caching für den Anwendungsserver, in dem die Anwendung ausgeführt wird, nicht aktiviert ist, wird ein Fehler ausgegeben. Der Anwendungsserver versucht weiterhin, eine Cacheinstanz abzurufen. Durch Aktivierung des Servlet-Cachings wird der Fehler behoben.
  • Wenn sich die Datei cachespec.xml im WebSphere Application Server-Eigenschaftsverzeichnis befindet, muss dieses erforderliche Element für Servlets und JSP-Dateien den vollständigen URI der JSP-Datei oder des Servlets enthalten, die bzw. das zwischengespeichert werden soll. Ist die Datei cachespec.xml in der Webanwendung enthalten, kann dieses erforderliche Element für Servlets und JSP-Dateien den relativen Pfad zum Stammkontext dieser Webanwendung enthalten.
  • Geben Sie für Web-Services den URI (Universal Resource Identifier) des SOAP-Router (Simple Object Access Protocol) an, der dem zwischenzuspeichernden Web-Service zugeordnet ist.
  • Für den Web-Service-Client-Cache ist der Name der Zielendpunkt des cachefähigen Web-Service oder der URI des SOAP-Router, der dem cachefähigen Web-Service zugeordnet ist. Sie können die Position der SOAP-Adresse in der WSDL-Datei verwenden, um den Namen für den Web-Service-Client-Cache zu definieren.
  • Wenn sich die Datei cachespec.xml im WebSphere Application Server-Eigenschaftsverzeichnis befindet, muss dieses erforderliche Element für statische Dateien den vollständigen URI der Datei enthalten, die zwischengespeichert werden soll. Ist die Datei cachespecm.xml in der Webanwendung enthalten, kann dieses erforderliche Element relativ zum Kontextstammverzeichnis der Webwendung angegeben werden. Für eine Webanwendung mit einem Kontextstammverzeichnis muss die Cacherichtlinie für Dateien, die die statische Klasse verwenden, in der Webanwendung und nicht im Verzeichnis "properties" angegeben werden.
  • Wenn sich die Datei cachespec.xml im WebSphere Application Server-Eigenschaftsverzeichnis befindet, muss dieses erforderliche Element für Portlets den vollständigen Kontextpfad und Namen des Portlets enthalten, das zwischengespeichert werden soll. Ist die Datei cachespec.xml in der Webanwendung enthalten, ist dieses erforderliche Element der Portlet-Name relativ zum Kontextstammverzeichnis der Webwendung.
Tipp: Die bevorzugte Position der Datei cachespec.xml ist die Webanwendung und nicht das Verzeichnis "properties".

Sie können mehrere Elemente "name" in einem Element "cache-entry" angeben, wenn Sie mehrere Zuordnungen haben, die auf dasselbe Servlet verweisen.

Die folgenden Beispiele veranschaulichen die Verwendung des Elements 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>

Wenn Sie in einem Cluster mit einem verteilten Cache arbeiten, legen diese Werte die gemeinsamen Eigenschaften der über dieses Objekt erstellten Einträge fest. Wenn dieses Element nicht vorhanden ist, wird ein not-shared-Wert angenommen.[AIX Solaris HP-UX Linux Windows] In Einzelserverumgebungen ist "not-shared" der einzige gültige Wert. [z/OS]Auf der z/OS-Plattform können Sie die Replikation zwischen Servants in einem Basisanwendungsserver mit den angepassten JVM-Eigenschaften (Java Virtual Machine) "DynacacheEnableUnmanagedServerReplication" und "DynacacheUnmanagedServerReplicationType" aktivieren. Wenn Sie eine Replikation aktivieren, ist der Standardwert not-shared. Diese Eigenschaft hat keine Auswirkungen auf die Verteilung an ESI-Prozessoren (Edge Side Include) mit der dem Edge-Eigenschaft für Fragment-Caching.

[AIX Solaris HP-UX Linux Windows][z/OS]Weitere Informationen finden Sie im Artikel "Cachereplikation konfigurieren".

Tabelle 1. Werte für "Sharing-policy". Werte und Beschreibung von "sharing-policy".
Wert Beschreibung
not-shared Cacheeinträge für dieses Objekt werden von verschiedenen Anwendungsservern nicht gemeinsam verwendet. Diese Einträge können nicht serialisierbare Daten enthalten. Beispielsweise kann ein im Cache gespeichertes Servlet nicht serialisierbare Objekte in Anforderungsattributen speichern, sofern der <class>-Typ dies unterstützt.
Fehler vermeiden Fehler vermeiden: Der Anwendungsserver repliziert immer Invalidierungseinträge, daher sind diese Einträge von der Richtlinie für gemeinsame Nutzung nicht betroffen. gotcha
shared-push Cacheeinträge für dieses Objekt werden automatisch auf die dynamischen Caches in anderen Anwendungsservern oder auf kooperierenden JVMs (Java Virtual Machines) verteilt. In jedem Cache wird dann eine Kopie des Eintrags abgelegt, wenn der Eintrag erstellt wird. Diese Einträge können keine nicht serialisierbaren Daten speichern.
shared-pull Cacheeinträge für dieses Objekt werden bei Bedarf von Anwendungsservern gemeinsam verwendet. Wenn ein Anwendungsserver einen Cachefehler für dieses Objekt erhält, fragt er zuerst die kooperierenden Anwendungsserver ab, um zu prüfen, ob sich das Objekt dort befindet. Wenn kein Anwendungsserver eine zwischengespeicherte Kopie des Objekts besitzt, führt der ursprüngliche Anwendungsserver die Anforderung aus und generiert das Objekt. Diese Einträge können keine nicht serialisierbaren Daten speichern. Dieser Modus der gemeinsamen Benutzung wird nicht empfohlen.
shared-push-pull Cacheeinträge für dieses Objekt werden bei Bedarf von Anwendungsservern gemeinsam verwendet. Wenn eine Anwendungsserver einen Cacheeintrag generiert, sendet er die Cache-ID des zwischengespeicherten Eintrags an alle kooperierenden Anwendungsserver. Jeder Server hat dann die Information, ob ein Eintrag für eine bestimmte Cache-ID vorhanden ist. Daher kann der Anwendungsserver im Falle einer Anforderung hinsichtlich dieses Eintrags festlegen, ob der Eintrag selbst generiert werden oder abgerufen werden muss. Diese Einträge können keine nicht serialisierbaren Daten speichern.
Das folgende Beispiel veranschaulicht eine Richtlinie für gemeinsame Benutzung:
<sharing-policy>not-shared</sharing-policy>
skip-cache
Mit dieser Eigenschaft kann der Name eines Anforderungsattributs angegeben werden, das, sofern es im Anforderungskontext vorhanden ist, vorgibt, dass die Antwort nicht aus der angegebenen Cacheinstanz abgerufen werden darf. Diese Eigenschaft ist hilfreich, um den Inhalt in Produktionsumgebungen voranzuzeigen und sicherzustellen, dass die Anwendung wie erwartet funktioniert und die erwartete Leistung erbringt.
<cache>
		<skip-cache-attribute>att1</skip-cache-attribute>	<!–Gilt nur für den Basiscache- ->
...
<cache-instance name="instance1">
<skip-cache-attribute>att2</skip-cache-attribute> <!-Gilt nur für diese Instanz- ->
...
</cache-instance>
</cache>
property

<property name="Schlüssel">Wert</property>

Schlüssel ist der Name der Eigenschaft für dieses Cacheeintragselement und Wert der zugehörige Wert.

Sie können optionale Eigenschaften für ein zwischenzuspeicherndes Objekt, wie z. B. eine Beschreibung des konfigurierten Servlet, festlegen. Die Klasse legt gültige Eigenschaften des Cacheeintrags fest. In diesem Fall sind die folgenden Eigenschaften definiert:

Tabelle 2. Eigenschaftswerte. Eigenschaftswerte und gültige Klassen.
Eigenschaft Gültige Klassen Wert
ApplicationName Alle Überschreibt die Anwendungs-ID von JavaEEName, damit mehrere Anwendungen einen gemeinsamen Namespace für Cache-IDs verwenden können.
EdgeCacheable Servlet "true" oder "false". Der Standardwert ist false. Ist die Eigenschaft auf true gesetzt, kann an ein entsprechendes Servlet oder eine entsprechende JSP-Datei extern eine Anforderung von einem ESI-Prozessor abgesetzt werden. Ob das Servlet oder die JSP-Datei zwischengespeichert werden kann, hängt vom Rest der Cachespezifikation ab.

Die zulässigen Komponenten für allgemeine edgecacheable-Cacheeinträge Einträge sind PARAMETER, HEADER, COOKIE und PATH_INFOSERVLET_PATH.

ExternalCache Servlet und Portlet Gibt den Namen des externen Caches an. Der Name des externen Caches muss mit dem Namen der externen Cachegruppe übereinstimmen.
consume-subfragments Servlet, Web-Service oder Portlet "true" oder "false". Der Standardwert ist false. Wenn ein Servlet zwischengespeichert wird, wird nur der Inhalt dieses Servlet gespeichert. Er enthält Platzhalter für alle anderen Fragmente, die es enthält bzw. auf die es verweist. CSF (Consume-subfragments) gibt dem Cache die Information, das Speichern von Inhalt nicht zu stoppen, wenn er ein untergeordnetes Servlet enthält. Der mit CSF markierte übergeordnete Eintrag enthält den gesamten Inhalt aller Fragmente im entsprechenden Cacheeintrag und bildet so einen großen Cacheeintrag, der keine Platzhalter oder Verweise, sondern den Inhalt der gesamten Eintragsstruktur enthält. Das kann dazu führen, dass der Anwendungsserver erheblich belastet wird, ist jedoch normalerweise nur sinnvoll, wenn die externe HTTP-Anforderung alle Informationen, die zur Festlegung der gesamten Struktur der enthaltenen Fragmente erforderlich ist, enthält.
Verwenden Sie das Element <exclude>, um den Cache anzuweisen, das ausgeschlossene Fragment nicht mehr zu verwenden und stattdessen einen Platzhalter für Einschluss (include) oder Weiterleitung (forward) zu erstellen. Sie können A.jsp beispielsweise wie folgt aus dem consume-subfragment ausschließen:
<property name="consume-subfragments">true
<exclude>/A.jsp<exclude>
</property>
do-not-consume Servlet, Web-Service oder Portlet "true" oder "false". Der Standardwert ist false. Wenn für ein übergeordnetes Fragment die Eigenschaft "consume-subfragment" auf "true" gesetzt ist, wird der Inhalt des untergeordneten Fragments im Cacheeintrag des übergeordneten Fragments gespeichert. Die Eigenschaft "Do-not-consume" (DNC) weist den Cache an, das Speichern des Fragmentinhalts im übergeordneten Cacheeintrag zu stoppen und für die include- bzw. forward- Aktion einen Platzhalter zu erstellen.
alternate_url Servlet Gibt den alternativen URL an, der zum Aufruf des Servlets oder der JSP-Datei verwendet wird. Die Eigenschaft ist nur gültig, wenn die Eigenschaft "EdgeCacheable" für den Cacheeintrag ebenfalls festgelegt wurde.
persist-to-disk Alle "true" oder "false". Der Standardwert ist true. Wird diese Eigenschaft auf false gesetzt, wird der Cacheeintrag im Fall eines Überlaufs oder Serverstopps nicht auf die Platte geschrieben.
save-attributes Servlet und Portlet "true" oder "false". Der Standardwert ist true. Wird diese Eigenschaft auf false gesetzt, werden die Anforderungsattribute nicht mit dem Cacheeintrag gespeichert.
Verwenden Sie das Element <exclude>, um die Anforderungsattribute anzugeben, die nicht für die Eigenschaft "save-attributes" gelten. Geben Sie beispielsweise Folgendes an, wenn nur das Attribut "attr1" im Cacheeintrag gespeichert werden soll:
<property name=
  "save-attributes">false
<exclude>attr1</exclude>
</property>

Wenn Sie alle Attribute mit Ausnahme von attr1 im Cacheeintrag speichern möchten, setzen Sie die Eigenschaft im vorherigen Beispiel auf "true". Falls Sie das Element <exclude> nicht verwenden, werden entweder alle Anforderungsattribute im Cacheeintrag gespeichert, oder es wird kein Anforderungsattribut im Cacheeintrag gespeichert.

delay-invalidations Befehl "true" oder "false". Wenn diese Eigenschaft auf true gesetzt ist, machen die Befehle für die Invalidierung zwischengespeicherter Objekte die Cacheeinträge basierend auf den definierten Invalidierungsregeln ungültig. Standardmäßig findet die Invalidierung vor der Befehlsausführung statt.
store-cookies Servlet und Portlet On oder off. Der Standardwert ist On. Mit dieser Eigenschaft können Sie einen oder mehrere Cookienamen als Argument angeben, die zusammen mit dem Cacheobjekt gespeichert und vom Servlet-Cache als Antwort mit einem Header set-cookie wiederhergestellt werden.
Speichern Sie wie folgt alle Cookies mit Ausnahme von cookie1 im Element "cache-entry":
<property name="store-cookies">true
<exclude>cookie</exclude>
</property>
Speichern Sie wie folgt nur cookie1 im Element "cache-entry":
<property name="store-cookies">false
<exclude><cookie1</exclude>
</property>
ignore-get-post Servlet und Portlet "true" oder "false". Der Standardwert ist false. Wenn Sie diese Eigenschaft auf true setzen, wird der Anforderungstyp nur dann an die Cache-ID für GET- und POST-Anforderung angefügt, wenn das requestType-Unterelement "component" definiert ist. Standardmäßig wird der Anforderungstyp automatisch an die Cache-ID für GET- und POST-Anforderungen angefügt.
ignore-char-encoding Servlet und Portlet "true" oder "false". Der Standardwert ist false. Wenn die Eigenschaft auf true gesetzt ist, wird die UTF-8-Zeichencodierung nicht an die Cache-ID angefügt. Das Anhängen der UTF-8-Zeichencodierung an die Cache-ID kann dazu führen, dass mehrere Kopien von Fragmenten erstellt werden, was den Cache unnötig vergrößert.
do-not-cache Servlet und Portlet Definiert ein Fragment, das weder zwischengespeichert noch von dem übergeordneten Element verwendet wird.
<cache-entry> 
...
<property name="do-not-cache">true</property>
oder
<cache-id>
<property name="do-not-cache">true</property>
</cache-id>
</cache-entry>
cache-id
Damit ein Objekt zwischengespeichert werden kann, muss der Anwendungsserver wissen, wie er eine eindeutige ID für die verschiedenen Aufrufe dieses Objekts generieren muss. Diese IDs werden mit benutzerdefiniertem angepasstem Java-Code oder anhand von Regeln, die in der Cacherichtlinie jedes Cacheeintrags definiert sind, erstellt. Jeder Cacheeintrag kann über mehrere Cache-ID-Regeln verfügen, die so lange nacheinander ausgeführt werden, bis eine der folgenden Situationen eintritt:
  • Eine Regel gibt eine andere als eine leere Cache-ID zurück.
  • Es sind keine weiteren Regeln zur Ausführung vorhanden.
Falls keine der Regeln zur Generierung einer Cache-ID eine gültige Cache-ID erzeugt, dann wird das Objekt nicht zwischengespeichert.
Jedes Element "cache-id" definiert eine Regel für die Zwischenspeicherung eines Objekts und enthält die Unterelemente component, timeout, inactivity, priority, property, idgenerator und metadatagenerator. Das folgende Beispiel veranschaulicht die Verwendung des Elements "cache-id":
<cache-id>
   component*| timeout? | inactivity? | priority? | property* | idgenerator? | metadatagenerator?
</cache-id>
Unterelement component

Mit dem Unterelement component wird ein Teil der Cache-ID generiert. Das Unterelement component umfasst die Attribute id, type und ignore-value sowie die Elemente index, method, field, required, value und not-value.

  • Mit dem Attribut id können Sie die Komponente angeben.
  • Mit dem Attribut type können Sie den Typ der Komponente angeben. In der folgenden Tabelle sind die Werte für die Typen aufgelistet.
    Fehler vermeiden Fehler vermeiden: Wenn das Unterelement der Parameterkomponente in der Datei "cachespec.xml" angegeben ist, legt der Web-Container die Zeichencodierung basierend auf der vom Anforderungsobjekt abgerufenen Codierungseinstellung fest. Ruft daraufhin ein Servlet die Methode "setCharacterEncoding" ab, hat die Methode keine Wirkung, weil die Zeichencodierung nicht mehr geändert werden kann, nachdem sie einmal definiert wurde. gotcha
    Tabelle 3. Typwert. Gültige Typklassen und ihre Bedeutung.
    Typ Gültige Klassen Bedeutung
    method Befehl Ruft die angezeigte Methode für den Befehl bzw. das Objekt auf.
    field Befehl Ruft das benannte Feld im Befehl bzw. Objekt ab.
    Parameter Servlet und Portlet Ruft den benannten Parameterwert vom Anforderungsobjekt ab.
    parameter-list Servlet und Portlet Ruft die Werteliste für den benannten Parameter ab.
    Fehler vermeiden Fehler vermeiden: Der Cache erfasst die Werte für alle Parameter mit diesem Namen und verwendet alle diese Werte in der Reihenfolge, in der sie erfasst werden, um die Cache-ID zu erstellen.gotcha
    session Servlet und Portlet Ruft den angegebenen Wert aus der HTTP-Sitzung ab.
    cookie Servlet Ruft den benannten Cookiewert ab.
    attribute Servlet und Portlet Ruft das benannte Anforderungsattribut ab.
    header Servlet, Web-Service und Portlet Ruft den Anforderungsheader ab.
    pathInfo Servlet Ruft das Element "pathInfo" aus der Anforderung ab.
    servletpath Servlet Ruft den Servletpfad ab.
    locale Servlet und Portlet Ruft die Anforderungs-Locale ab.
    Achtung: Die Komponente "locale" ist nur für edgecacheable-Einträge gültig, wenn RRD verwendet wird. Die Komponente "locale" ist für alle andere ESI-Versionen nicht gültig.
    requestType Servlet und Portlet Ruft die HTTP-Anforderungsmethode aus der Anforderung ab.
    Achtung: Die Komponente "requestType" ist nur für edgecacheable-Einträge gültig, wenn RRD verwendet wird. Die Komponente "requestType" ist für alle andere ESI-Versionen nicht gültig.
    tiles_attribute Servlet und Portlet Ruft den Wert eines Attributs aus einem Stapel ab.
    SOAPEnvelope Web-Service und Web-Service-Client-Cache Ruft das Element "SOAPEnvelope" aus der Anforderung eines Web-Service ab. Das ID-Attribut Hash verwendet einen Hash des Elements SOAPEnvelope, das Attribut Literal verwendet ein Element SOAPEnvelope wie empfangen.
    SOAPAction Web-Service Ruft den SOAPAction-Header (falls verfügbar) für die Anforderungen eines Web-Service ab.
    serviceOperation Web-Service Ruft die Serviceoperation für eine Web-Service-Anforderung ab.
    serviceOperationParameter Web-Service Ruft den angegebenen Parameter von der Anforderung eines Web-Service ab.
    operation Web-Service-Client-Cache Gibt einen Operationstyp in der WSDL-Datei an. Das Attribut id wird ignoriert, und der Wert ist der Operations- oder Methodenname. Wenn der Namespace der Operation angegeben wird, muss der Wert das Format Namespace_der_Operation:Name_der_Operation haben.
    part Web-Service-Client-Cache Gibt einen Eingabenachrichtenabschnitt in der WSDL-Datei oder einen Anforderungsparameter an. Das Attribut id ist der Name des Nachrichtenabschnitts oder Parameters und Wert der Wert des Nachrichtenabschnitts oder Parameters.
    SOAPHeaderEntry Web-Service-Client-Cache Ruft spezielle Informationen aus dem SOAP-Header der Web-Service-Anforderung ab. Das Attribut id gibt den Namen des Eintrags ab. Außerdem muss der Eintrag des SOAP-Header in der SOAP-Anforderung das Attribut actor mit dem Wert com.ibm.websphere.cache enthalten. Beispiele:
    <soapenv:Header>
    	<getQuote soapenv:actor="com.ibm.websphere.cache">IBM</getQuote>
    </soapenv:Header>
    portletSession Portlet Ruft den angegebenen Wert aus der Portlet-Sitzung ab.
    portletWindowId Portlet Ruft die Portlet-Fenster-ID aus dem Portlet-Anforderungsobjekt ab.
    portletMode Portlet Ruft den Portlet-Modus aus dem Portlet-Anforderungsobjekt ab.
    portletWindowsState Portlet Ruft den Portlet-Fensterstatus aus dem Portlet-Anforderungsobjekt ab.
    sessionID Servlet und Portlet Ruft die HTTP-Sitzungs-ID ab.
  • Mit dem Attribut ignore-value geben Sie an, ob der von dieser Komponente zurückgegebene Wert in der Cache-ID verwendet werden soll. Es ist ein optionales Attribut, das standardmäßig den Wert false hat. Wenn das Attribut den Wert true hat, wird nur die ID der Komponente für die Erstellung einer Cache-ID verwendet, da andernfalls bei der Erstellung einer Abhängigkeit oder Invalidierungs-ID keine Ausgabe verwendet wird.
  • Mit dem Element method wird eine leere Methode für ein zurückgegebenes Objekt aufgerufen. Sie können method- und field-Objekte in jeder Kombination unbegrenzt verschachteln. Die Methode muss vom Typ "public" sein und ist für Komponenten, die im Edge-Cache gespeichert werden können, nicht gültig. Beispiel:
    <component id="getUser" type="method"><method>getUserInfo
    <method>getName</method></method></component>

    Diese Methode ist identisch mit getUser().getUserInfo().getName()

    Wenn das zurückgegebene Objekt eine Objektgruppe oder ein Array ist, wird die ID für Attribute des Typs component, Methoden und Felder, die ein Objekt zurückgeben können, aus den Elementen in der Objektgruppe bzw. des Array, jeweils getrennt durch ein Kommata gebildet. Beispiel: Das Anforderungsattribut users gibt einen Array [a, b] zurück, und der Cacheeintrag ist wie folgt definiert:
    <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>
    Die Cache-ID enthält die Zeichenfolge users: a,b. Die Abhängigkeits-ID ist dep: a,b.
    Verwenden Sie das Attribut multipleIDs mit Attributen des Typs component, wenn basierend auf den Elementen in der Objektgruppe bzw. des Array mehrere Abhängigkeits-IDs (oder Invalidierungs-IDs) generiert werden sollen. Beispiele:
    <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>
    Die Cacherichtlinie generiert die folgenden Abhängigkeits-IDs:
    • dep:a,b
    • dep:a
    • dep:b
    Verwenden Sie das Element "index" zusammen mit dem oben genannten Attribut component, wenn der erstellten ID nur der Wert des Elements an der angegebenen Indexposition in der Objektgruppe bzw. im Array hinzugefügt werden soll.
    <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>
    Die gezeigte Cacherichtlinie generiert die folgende Komponente für die Cache-ID: users: b. Verwenden Sie das Element <method>, um eine void-Methode für ein zurückgegebenes Objekt aufzurufen.
  • Mit dem Element field können Sie auf ein Feld in einem zurückgegebenen Objekt zugreifen. Sie können method- und field-Objekte in jeder Kombination unbegrenzt verschachteln. Das Element "field" muss vom Typ "public" sein. Dieses Feld ist für Komponenten, die im Edge-Cache gespeichert werden können, nicht gültig. Beispiel:
    <component id="getUser" type="method"><method>getUserInfo
    <field>name</field></method></component>

    Diese Methode ist identisch mit der Methode getUser().getUserInfo().name.

  • Mit dem Element required können Sie angeben, ob diese Komponente einen Wert ungleich null für diese Cache-ID zurückgeben muss, damit sie einen gültigen Cache darstellt. Bei Angabe von true muss diese Komponente einen Wert ungleich null zurückgeben, damit dies eine gültige Cache-ID ist. Bei Angabe der Standardeinstellung false wird ein Wert ungleich null zur Angabe der Cache-ID verwendet, und der Wert null bedeutet, dass diese Komponente bei der Angabe der Cache-ID nicht verwendet wird. Beispiele:
    <required>true</required>
  • Mit dem Element value werden Werte festgelegt, die übereinstimmen müssen, damit diese Komponente bei der Angabe der Cache-ID verwendet werden kann. Beispiele:
    <component id="getUser" type="method"><value>blue</value> 
    <value>red</value> </component>
  • Mit dem Element not-value werden Werte festgelegt, die nicht übereinstimmen dürfen, damit diese Komponente bei der Angabe der Cache-ID verwendet werden kann. Diese Methode gleicht dem Element value, schreibt aber die definierten Werte aus dem Caching vor. Sie können mehrere Elemente not-value angeben, wenn mehrere Werte vorhanden sind, die nicht gültig sind. Beispiele:
    <component id="getUser" type="method">
    <required>true</required>
    <not-value>blue</not-value>
    <not-value>red</not-value></component>
Das Unterelement component kann ein Element method und ein Element field, ein Element value oder ein Element not-value enthalten. Die Elemente method und field gelten nur für Befehle. Das folgende Beispiel veranschaulicht die Attribute eines Unterelements component:
<component id="isValid" type="method" ignore-value="true"><component>
Unterelement timeout
Mit dem Unterelement timeout kann ein absoluter TTL-Wert (Time-To-Live, Lebensdauer) für den Cacheeintrag festgelegt werden. Beispiel:
<timeout>Wert</timeout>

Wert ist die Zeit (in Sekunden), die der Cacheeintrag aufbewahrt werden soll. Cacheeinträge im Hauptspeicher werden so lange aufbewahrt, wie die Einträge im Hauptspeicher verbleiben. Auf der Platte gespeicherte Cacheeinträge werden gelöscht, wenn mehr als 24 Stunden nicht auf sie zugegriffen wurde.

Unterelement inactivity
Mit dem Unterelement inactivity kann ein TTL-Wert für den Cacheeintrag basierend auf dem letzten Zugriff auf den Cacheeintrag definiert werden. Es ist ein Unterelement des Elements "cache-id".
<inactivity>Wert</inactivity>
Wert gibt an, wie lange (in Sekunden) der Cacheeintrag nach dem letzten Cachetreffer zwischengespeichert bleiben soll.
Unterelement priority
Mit dem Unterelement priority wird die Priorität eines Cacheeintrags im Cache festgelegt. Anhand der Prioritätsgewichtung ermittelt der LRU-Algorithmus (Least Recently Used, zuletzt verwendet) des Cache, welche Einträge aus dem Cache entfernt werden sollen, wenn kein Cachespeicher mehr vorhanden ist. Beispiel:
<priority>Wert</priority>

Wert ist eine positive ganze Zahl von 1 bis einschließlich 16.

Beispiele
Im folgenden Beispiel wird der Cacheeintrag mindestens 35 Sekunden und maximal 180 Sekunden im Cache gehalten. Falls innerhalb von 35 Sekunden ein Zugriff auf den Cacheeintrag erfolgt, wird das Inaktivitätszeitlimit um weitere 35 Sekunden verlängert. Das aber auch das Element "timeout" konfiguriert ist, wird der Cacheeintrag immer nach 180 Sekunden ungültig gemacht. Sollte innerhalb von 35 Sekunden kein Cachezugriff erfolgen, wird der Cacheeintrag aus dem Cache entfernt.
<cache-id>
		<component id="timeout" type="parameter">
		<required>true</required>
	</component>
		<timeout>180</timeout>
		<inactivity>35</inactivity>
		<priority>1</priority>
</cache-id>
Im folgenden Beispiel wird der Cacheeintrag mindestens 600 Sekunden im Cache gehalten. Falls innerhalb von 600 Sekunden ein Zugriff auf den Cacheeintrag erfolgt, wird das Inaktivitätszeitlimit um weitere 600 Sekunden verlängert. Sollte innerhalb von 600 Sekunden kein Cachezugriff erfolgen, wird der Cacheeintrag aus dem Cache entfernt.
<cache-id>
		<component id="timeout" type="parameter">
		<required>true</required>
	</component>
		<inactivity>600</inactivity>
		<priority>1</priority>
</cache-id>
Im folgenden Beispiel wird der Wert für die Inaktivität nicht berücksichtigt, weil das Zeitlimitintervall kleiner ist als der Inaktivitätszeitraum. Der Cacheeintrag wird unabhängig von den Zugriffen auf den Cacheeintrag immer nach 180 Sekunden ungültig gemacht.
<cache-id>
		<component id="timeout" type="parameter">
		<required>true</required>
	</component>
		<timeout>180</timeout>
		<inactivity>600</inactivity>
		<priority>1</priority>
</cache-id>
Unterelement property
Mit dem Unterelement property werden generische Eigenschaften für den Cacheeintrag festgelegt. Beispiel:
<property name="Schlüssel">Wert</property>

Schlüssel steht für den Namen der zu definierenden Eigenschaft und Wert für den zugehörigen Wert.

Beispiele:
<property name="description">Das Servlet Snoop</property>
Tabelle 4. Werte für Unterelemente von Eigenschaften. Gültige Klassen und Bedeutung der Eigenschaft.
Eigenschaft Gültige Klassen Bedeutung
sharing-policy/timeout/priority Alle Überschreibt die Einstellungen für den Cacheeintrag, der diese Eigenschaft enthält, wenn die Anforderung mit dieser Cache-ID übereinstimmt.
EdgeCacheable Servlet Überschreibt die Einstellungen für den Cacheeintrag, der diese Eigenschaft enthält, wenn die Anforderung mit dieser Cache-ID übereinstimmt.

Unterelemente idgenerator und metadatagenerator

Mit dem Element idgenerator kann der Name der Klasse angegeben werden, die für die Generierung der Cache-ID geladen werden soll. Das Element "IdGenerator" muss die Schnittstelle "com.ibm.websphere.servlet.cache.IdGenerator" für ein Servlet oder die Schnittstelle "com.ibm.websphere.webservices.IdGenerator" für den Web-Service-Client-Cache implementieren. Es folgt ein Beispiel für das Element "idgenerator":
<idgenerator> Klassenname </idgenerator>
Klassenname steht hier für den vollständig qualifizierten Namen der zu verwendenden Klasse. Definieren Sie diese Generatorklasse in einer gemeinsam genutzten Bibliothek.
Verwenden Sie das Element "metadatagenerator" im Element "cache-id", um den Klassennamen für die Generierung der Metadaten anzugeben. Die Klasse "MetadataGenerator" muss die Schnittstelle "com.ibm.websphere.servlet.cache.MetaDataGenerator" für ein Servlet oder die Schnittstelle "com.ibm.websphere.cache.webservices.MetaDataGenerator" für den Web-Service-Client-Cache implementieren. MetadataGenerator definiert Eigenschaften wie Zeitlimits, Inaktivität, externe Caching-Eigenschaften und Abhängigkeiten. Es folgt ein Beispiel für das Element metadatagenerator:
<metadatagenerator> Klassenname </metadatagenerator>
In diesem Beispiel steht "Klassenname" für den vollständig qualifizierten Namen der zu verwendenden Klasse. Definieren Sie diese Generatorklasse in einer gemeinsam genutzten Bibliothek.

Element dependency-id

Mit dem Element dependency-id können Sie zusätzliche Cache-IDs angeben, die mehrere Cacheeinträge derselben Gruppen-ID zuordnen.

Der Wert des Elements dependency-id wird generiert, indem die Basiszeichenfolge für die Abhängigkeits-ID mit den Werten verkettet werden, die von den Elementen component zurückgegeben werden. Wenn ein erforderliches Element component einen Nullwert zurückgibt, wird die Abhängigkeit nicht generiert und somit auch nicht verwendet. Sie können die Abhängigkeits-IDs explizit mit der API für den dynamischen Cache-Service oder mit dem Element "invalidation" validieren. In einem Element "cache-entry" können mehrere Regeln für Abhängigkeits-IDs enthalten sein. Alle Abhängigkeitsregeln werden separat ausgeführt.

Element invalidation

Für die Invalidierung zwischengespeicherter Objekte muss der Anwendungsserver eindeutige Invalidierungs-IDs generieren. Diese IDs können mit eigenem Java-Code oder anhand von Regeln erstellt werden, die in der Cacherichtlinie jedes Cacheeintrags definiert werden. Das folgende Beispiel veranschaulicht eine Invalidierung in der Cacherichtlinie:
<invalidation>component* | invalidationgenerator? </invalidation>

Unterelement invalidationgenerator

Das Element "invalidationgenerator" wird nur für den Web-Service-Client-Cache verwendet. Geben Sie mit dem Element "invalidationgenerator" den Namen der für die Generierung der Invalidierungs-IDs zu verwendenden Klasse an. Die Klasse "InvalidationGenerator" muss die Schnittstelle "com.ibm.websphere.cache.webservices.InvalidationGenerator" implementieren. Es folgt ein Beispiel für das Element "invalidationgenerator":
<invalidationgenerator>Klassenname</invalidationgenerator>
In diesem Beispiel steht "Klassenname" für den vollständig qualifizierten Namen der Klasse, die die Schnittstelle "com.ibm.websphere.cache.webservices.InvalidationGenerator" implementiert. Definieren Sie diese Generatorklasse in einer gemeinsam genutzten Bibliothek.

Beispieldatei cachespec.xml

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

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

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

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

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

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

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

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


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

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

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

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

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


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


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


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

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

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

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

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

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

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

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

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

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

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

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

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


	</cache-instance>

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

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

	</cache-instance> 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

	</cache-entry>

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

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


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

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

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

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

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


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

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

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


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

	</cache-entry>

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

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

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

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

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

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

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

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

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

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


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

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


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

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

	</cache-instance>

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

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

	</cache-instance>

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

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

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

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

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

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

	</cache-entry>

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

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

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

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

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

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

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

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

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


	</cache-entry>

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

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

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

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

	</cache-entry>

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

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

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

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





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

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

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

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

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

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

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

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

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

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

	</cache-entry>

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

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

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

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

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

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

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

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

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

	</cache-entry>

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


		<!-- gültige Spezifikationen werden bei Übereinstimmung zwischengespeichert -->
		<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>

		<!-- gültige Spezifikationen werden bei Übereinstimmung zwischengespeichert -->
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>RangeAttrTest10</value>
			</component>
			<component id="RangeTestAttribute" type="attribute">
				<required>true</required>
				<value>9</value>
				<value>
					<range low="-20" high="-10" />
				</value>
			</component>
		</cache-id>

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

	</cache-entry>

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

		<!-- Anmerkung: Weil die untergeordneten JSPs keine eigenen
 	Cacheeinträge (cache-entry) haben, sollten sie selbst niemals
  zwischengespeichert werden, sondern, basierend auf dieser
		Konfiguration, nur als Teil des übergeordneten Ergebnisses -->
		<cache-id>
			<component id="test" type="parameter">
				<required>true</required>
				<value>test01</value>
			</component>
			<property name="consume-subfragments">
				true 				<exclude>/ConsumeSubfragmentsExcludeChild1.jsp</exclude>
			</property>
		</cache-id>

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

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

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

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

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

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

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

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

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

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

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

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rdyn_cachespec
Dateiname:rdyn_cachespec.html