cachespec.xml file
캐시는 서버가 시작될 때 cachespec.xml 파일을 구문 분석하며, 각각의 cache-entry 요소에서 구성 매개변수의 세트를 추출합니다. 새 서블릿 또는 기타 캐시 가능한 오브젝트가 초기화될 때마다, 캐시는 해당 오브젝트에 대한 구성 정보를 찾기 위해 각각의 cache-entry 요소를 일치하도록 합니다.
cache-entry 요소는 루트 cache 요소나 cache-instance 요소의 내부에 있을 수 있습니다. 루트 요소에 있는 캐시 항목은 기본 캐시 인스턴스로 캐시됩니다. <cache-instance> 요소에 있는 캐시 항목은 해당 특정 캐시 인스턴스에 캐시됩니다. 서로 다른 캐시 가능한 오브젝트는 다른 class 요소를 가집니다. name 요소를 사용하여 캐시 정책이 참조하는 특정 오브젝트를 정의할 수 있습니다.
위치
cachespec.xml 파일을 배치 모듈에 두십시오. 어셈블리 도구를 사용하여 캐시 가능한 오브젝트를 정의하십시오. 애플리케이션 어셈블링 관련 주제를 참조하십시오. 또한 글로벌 cachespec.xml 파일을 애플리케이션 서버 특성 디렉토리에 넣으십시오. Application Server 특성 디렉토리에 글로벌 cachespec.xml 파일이 있고 애플리케이션에 cachespec.xml 파일이 있는 상황에서는 두 가지 cachespec.xml 파일의 항목이 병합됩니다. 두 개의 파일에 충돌하는 항목이 있으면 애플리케이션에 있는 cachespec.xml 파일의 항목이 이 애플리케이션에 대한 글로벌 cachespec.xml 파일의 항목을 대체합니다.
cachespec.dtd 파일은 애플리케이션 서버 특성 디렉토리에서 사용 가능합니다. cachespec.dtd 파일은 cachespec.xml 파일에 포함될 수 있는 적합한 구조와 요소를 정의합니다.
사용법 참고
- Cachespec.xml 요소
- cachespec.xml 파일의 루트 요소는 cache이며, 여기에는 cache-instance 및 cache-entry 요소가 포함됩니다. 캐시 항목을 기 본값과 다른 캐시 인스턴스의 일부로 하기 위해 cache-entry 요소를 cache-instance 요소의 내부에 놓을 수도 있습니다.
- cache-instance
- <cache-instance name="cache_instance_name"></cache-instance>
이름 속성은 관리 콘솔에서 설정된 캐시 인스턴스의 JNDI(Java™ Naming and Directory Interface) 이름입니다.
각각의 cache-instance 요소에는 최소한 하나의 cache-entry 요소가 포함되어 있어야 합니다. cache-instance 요소 내부에서 일치하는 캐시 항목은 이름 속성에 의해 지정된 서블릿 캐시 인스턴스에 캐시됩니다. 동일한 cache-entry 요소가 cache-instance 요소에서 존재하면 일치하는 첫 번째 cache-entry 요소가 사용됩니다.
- cache-entry
- 캐시 입력마다 동적 캐시가 해당 입력을 처리할 때 사용할 수 있는 특정 기본 정보를 지정해야 합니다. 이 절에서는 다음을 포함하여
cachespec.xml 파일의 각 캐시 항목 요소의 기능에
대해 설명합니다.
- class
- 이름
- sharing-policy
- skip-cache
- property
- cache-id
현재 WebSphere® Application Server 버전에서는 단일 서블릿에 대한 캐시 정책을 여러 개 정의할 수 있습니다. 예를 들어, web.xml 파일에 서블릿에 대한 여러 맵핑을 정의하면 각 맵핑에 대한 캐시 항목을 작성할 수 있습니다.
- class
<class>command | servlet | webservice | JAXRPCClient | static | portlet </class>
이 요소는 필수이며 애플리케이션 서버가 나머지 캐시 정책 정의를 해석하는 방법을 지정합니다. servlet 값은 WebSphere Application Server 서블릿 엔진에서 배치된 서블릿 및 JSP(JavaServer Pages) 파일을 의미합니다. webservice 클래스는 특수 컴포넌트 유형의 웹 서비스 요청으로 서블릿을 확장합니다. JAXRPCClient는 웹 서비스 클라이언트 캐시의 캐시 항목을 정의하는 데 사용됩니다. 값 command는 WebSphere Application Server 명령 프로그래밍 모델을 사용하는 클래스를 참조합니다. static 값은 정적 컨텐츠가 포함된 파일을 참조합니다. 다음은 class 요소의 예입니다.
<class>command</class> <class>servlet</class> <class>webservice</class> <class>JAXRPCClient</class> <class>static</class> <class>portlet</class>
- 이름
<name>name</name>
캐시 가능한 오브젝트를 지정하려면 name 요소에 대해 다음 지침을 사용하십시오.- 명령의 경우, 이 필수 요소는 구성된 오브젝트의 후미
.\class를 비롯한 패키지 이름(있는 경우) 및 클래스 이름을
포함해야 합니다. 중요사항: cachespec.xml 파일에서 명령 캐싱을 지정하고 애플리케이션이 실행하는 애플리케이션 서버에 서블릿 캐싱이 사용 가능하지 않은 경우 오류를 가져옵니다. 애플리케이션 서버는 캐시 인스턴스를 얻기 위해 계속 시도하므로 서블릿 캐싱이 사용 가능하면 오류가 제거됩니다.
- 서블릿 및 JSP 파일의 경우, cachespec.xml 파일이 WebSphere Application Server 특성 디렉토리에 있으면 이 필수 요소는 캐시할 JSP 파일 또는 서블릿의 전체 URI를 포함해야 합니다. 서블릿 및 JSP 파일의 경우, cachespec.xml 파일이 웹 애플리케이션에 있으면 이 필수 요소는 특정 웹 애플리케이션 컨텍스트 루트에 상대적일 수 있습니다.
- 웹 서비스의 경우, 캐시하려는 웹 서비스와 연관된 SOAP(Simple Object Access Protocol) 라우터의 URI(Universal Resource Identifier)를 포함하십시오.
- 웹 서비스 클라이언트 캐시의 경우, 이름은 캐시 가능한 웹 서비스와 연관된 SOAP 라우터의 URI 또는 캐시 가능한 웹 서비스의 대상 엔드포인트입니다. WSDL(Web Services Description Language) 파일에서 SOAP 주소 위치를 사용하여 웹 서비스 클라이언트 캐시의 이름을 정의할 수 있습니다.
- 정적 파일의 경우, cachespec.xml 파일이 WebSphere Application Server 특성 디렉토리에 있으면 이 필수 요소는 캐시할 파일의 전체 URI를 포함해야 합니다. cachespecm.xml 파일이 웹 애플리케이션에 있으면, 이 필수 요소는 특정 웹 애플리케이션 컨텍스트 루트에 상대적일 수 있습니다. 컨텍스트 루트의 웹 애플리케이션의 경우, 정적 클래스를 사용한 파일의 캐시 정책은 웹 애플리케이션에 지정해야 하며 특성 디렉토리에 지정할 수 없습니다.
- 포틀릿의 경우, cachespec.xml 파일이 WebSphere Application Server 특성 디렉토리에 있으면 이 필수 요소는 캐시할 포틀릿의 전체 컨텍스트 경로 및 이름을 포함해야 합니다. cachespec.xml 파일이 웹 애플리케이션에 있으면, 이 필수 요소는 특정 웹 애플리케이션 컨텍스트 루트에 상대적인 포틀릿 이름입니다.
팁: cachespec.xml 파일의 선호 위치는 특성 디렉토리가 아닌 웹 애플리케이션에 있습니다.동일한 서블릿을 참조하는 다른 맵핑을 가질 경우 cache-entry 내에 여러 name 요소를 지정할 수 있습니다.
다음은 name 요소의 예입니다.<name>com.mycompany.MyCommand.class</name> <name>default_host:/servlet/snoop</name> <name>com.mycompany.beans.MyJavaBean</name> <name>mywebapp/myjsp.jsp</name> <name>/soap/servlet/soaprouter</name> <name>http://remotecompany.com:9080/service/getquote</name> <name>mywebapp/myLogo.gif</name>
- 명령의 경우, 이 필수 요소는 구성된 오브젝트의 후미
.\class를 비롯한 패키지 이름(있는 경우) 및 클래스 이름을
포함해야 합니다.
- sharing-policy
<sharing-policy> not-shared | shared-push | shared-pull | shared-push-pull</sharing-policy>
분산 캐시가 있는 클러스터 내에서 작업하는 경우, 이들 값은 이 오브젝트에서 작성된 항목의 공유 특성을 판별합니다. 이 요소가 없는 경우, 공유되지 않은 값으로 가정합니다.
단일 서버 환경에서는 공유되지 않은 값만 유효합니다.
z/OS® 플랫폼에서는 DynacacheEnableUnmanagedServerReplication 및 DynacacheUnmanagedServerReplicationType JVM(Java Virtual Machine) 사용자 정의 특성을 사용하여 기본 Application Server에서 하위(servant) 간에 복제가 가능하게 할 수 있습니다. 복제를 사용 가능으로 하는 경우, 기본값은 not-shared입니다. 이 특성은 에지 단편 캐싱 특성을 통한 ESI(Edge Side Include) 프로세서로의 분배에 영향을 주지 않습니다.
자세한 정보는 캐시 복제 구성 문서를 참조하십시오.
표 1. Sharing-policy 값. sharing-policy의 값 및 설명 값 설명 not-shared 이 오브젝트의 캐시 항목이 여러 애플리케이션 서버 사이에서 공유되지 않습니다. 이러한 항목은 직렬화할 수 없는 데이터를 포함할 수 있습니다. 예를 들어, <class> 유형이 지원되는 경우 캐시된 서블릿은 직렬화할 수 없는 오브젝트를 요청 속성에 배치할 수 있습니다. 문제점 방지: 애플리케이션 서버는 항상 무효화 항목을 복제합니다. 무효화 항목은 공유 정책의 영향을 받지 않습니다. gotcha
shared-push 이 오브젝트의 캐시 항목은 다른 애플리케이션 서버 또는 협력하는 JVM(Java Virtual Machine)의 동적 캐시로 자동 분배됩니다. 각 캐시는 항목이 작성될 때 사본을 가집니다. 이러한 항목은 직렬화할 수 없는 데이터를 저장할 수 없습니다. shared-pull 이 오브젝트의 캐시 항목은 요구가 있을 때 Application Server에서 공유됩니다. 애플리케이션 서버가 이 오브젝트에 대한 캐시를 확보하지 못한 경우, 협력하는 애플리케이션 서버를 조회하여 오브젝트를 가지는지 확인합니다. 애플리케이션 서버에 오브젝트의 캐시된 사본이 없는 경우, 원래 애플리케이션 서버는 요청을 실행하고 오브젝트를 생성합니다. 이러한 항목은 직렬화할 수 없는 데이터를 저장할 수 없습니다. 이 공유 모드는 권장되지 않습니다. shared-push-pull 이 오브젝트의 캐시 항목은 요구가 있을 때 Application Server에서 공유됩니다. 애플리케이션 서버는 캐시 항목을 생성할 때 생성된 항목의 캐시 ID를 모든 협력하는 애플리케이션 서버로 브로드캐스트합니다. 그러면 각 서버는 지정된 캐시 ID에 대한 항목의 존재 여부를 인식합니다. 따라서 해당 항목에 대한 요청 제공 시 애플리케이션 서버는 항목을 자체 생성할지 다른 곳에서 항목을 가져올지 여부를 결정합니다. 이 항목은 직렬화 불가능 데이터를 저장할 수 없습니다. 다음 예제는 공유 정책을 보여줍니다.<sharing-policy>not-shared</sharing-policy>
- skip-cache
- 지정된 캐시 인스턴스에서 응답을 검색할 수 없음을
알려주는 요청 속성의 이름을 가져옵니다(요청 컨텍스트에
존재할 경우). 이 특성은 프로덕션 시스템에서
컨텐츠를 미리 보고 애플리케이션이 예상대로 작동 및 수행하는지를
확인할 때 유용합니다.
<cache> <skip-cache-attribute>att1</skip-cache-attribute> <!–Applies only to the base cache- -> ... <cache-instance name="instance1"> <skip-cache-attribute>att2</skip-cache-attribute> <!-Applies only to this instance- -> ... </cache-instance> </cache>
- property
<property name="key">value</property>
여기서, key는 이 캐시 항목 요소에 대한 특성의 이름이며 value는 해당 값입니다.
구성된 서블릿의 설명과 같이 캐시 가능한 오브젝트에 대해 선택적 특성을 설정할 수 있습니다. 이 클래스는 캐시 항목의 유효한 특성을 판별합니다. 이 때 다음 특성이 정의됩니다.
표 2. 특성 값. 특성 값 및 올바른 클래스 특성 유효한 클래스 값 ApplicationName 모두 복수 애플리케이션이 공통 캐시 ID 네임스페이스를 공유할 수 있도록 JavaEEName 애플리케이션 ID를 대체합니다. EdgeCacheable Servlet True 또는 False. 기본값은 false입니다. 특성이 true이면, 제공된 서블릿 또는 JSP 파일이 ESI(Edge Side Include) 프로세서에서 외부적으로 요청됩니다. 서블릿 또는 JSP 파일이 캐시 가능한지 여부는 나머지 캐시 스펙에 따라 달라집니다. 일반 edgecacheable 캐시 항목에 허용 가능한 컴포넌트는 PARAMETER, HEADER, COOKIE 및 PATH_INFOSERVLET_PATH입니다.
ExternalCache 서블릿 및 포틀릿 외부 캐시 이름을 지정합니다. 외부 캐시 이름은 외부 캐시 그룹 이름과 일치해야 합니다. consume-subfragments 서블릿, 웹 서비스 또는 포틀릿 True 또는 False. 기본값은 false입니다. 서블릿이 캐시되면, 그 서블릿의 내용만 저장되고, 포함하거나 전달하는 임의의 다른 단편에 대한 플레이스홀더를 포함합니다. CSF(Consume-subfragments)는 캐시에게 하위 서블릿을 포함할 때 내용의 저장을 중단하지 말도록 지시합니다. 상위 항목(표시된 CSF)은 결과적으로 포함 또는 전달은 없지만 항목의 트리 전체 내용을 갖는 하나의 큰 캐시 항목이 되는 단편 캐시 항목에 있는 모든 단편의 모든 내용을 포함합니다. CSF(Consume-subfragments)는 상당히 많은 애플리케이션 서버 처리량을 저장할 수 있지만, 일반적으로 외부 HTTP 요청이 포함된 단편의 트리 전체를 판별하는 데 필요한 모든 정보를 포함하고 있을 때만 유용합니다. 캐시에게 제외된 단편에 대한 이용을 중지하고 대신 포함 또는 전달에 필요한 플레이스홀더를 작성하도록 지시하려면 <exclude> 요소를 사용하십시오. 예를 들어, 다음과 같이 CSF(consume-subfragment)에서 A.jsp를 제외시키십시오.<property name="consume-sbufragments">true <exclude>/A.jsp<exclude> </property>
do-not-consume 서블릿, 웹 서비스 또는 포틀릿 True 또는 False. 기본값은 false입니다. 단편 상위의 consume-subfragment 특성이 true로 설정되어 있으면 하위 단편 컨텐츠가 상위의 캐시 항목에 저장됩니다. DNC(Do-not-consume)는 캐시에 상위 캐시 항목의 이 단편에 대한 컨텐츠 저장을 중지하고 포함 또는 전달 대신에 플레이스홀더를 작성하도록 알려줍니다. alternate_url Servlet 서블릿이나 JSP 파일을 호출하는 데 사용되는 대체 URL을 지정합니다. 이 특성은 캐시 항목에 대해 EdgeCacheable 특성도 설정되는 경우에만 유효합니다. persist-to-disk 모두 True 또는 False. 기본값은 true입니다. 이 특성이 false로 설정되면, 오버플로우나 서버 중지가 발생할 때 캐시 항목이 디스크에 기록되지 않습니다. save-attributes 서블릿 및 포틀릿 True 또는 False. 기본값은 true입니다. 이 특성이 false로 설정되면, 요청 속성이 캐시 항목과 함께 저장되지 않습니다. <exclude> 요소를 사용하여 save-attributes 특성에 적용되지 않는 요청 속성을 지정할 수 있습니다. 예를 들어, 캐시 항목의 attr1 속성만 저장하려면 다음과 같습니다.<property name= "save-attributes">false <exclude>attr1</exclude> </property>
캐시 항목의 attr1 속성을 제외한 모든 속성을 저장하려면 이전 샘플에서 특성을 true로 설정하십시오. <exclude> 요소를 사용하지 않으면, 모든 요청 속성이 캐시 항목과 함께 저장되거나 어떤 요청 속성도 캐시 항목과 함께 저장되지 않습니다.
delay-invalidations 명령 True 또는 False. 이 특성을 true로 설정하면, 이 캐시 항목에서 무효화 규칙을 기반으로 캐시된 오브젝트를 무효화하는 명령은 실행 후에 캐시 항목을 무효화합니다. 기본적으로 무효화는 명령이 실행되기 전에 발생합니다. store-cookies 서블릿 및 포틀릿 On 또는 Off. 기본값은 On입니다. 이 특성은 하나 이상의 쿠키 이름을 캐시 오브젝트와 함께 저장되고 set-cookie 헤더에 대한 응답으로 서블릿 캐시에 의해 복원된 인수로 가져옵니다. 다음과 같이 cookie1을 제외한 모든 쿠키를 cache-entry의 일부로 저장하십시오.<property name="store-cookies">true <exclude>cookie</exclude> </property>
다음과 같이 cookie1만 cache-entry의 일부로 저장하십시오.<property name="store-cookies">false <exclude><cookie1</exclude> </property>
ignore-get-post 서블릿 및 포틀릿 True 또는 False. 기본값은 false입니다. 특성을 true로 설정할 경우, requestType 컴포넌트 requestType 컴포넌트 부속 요소를 정의하지 않으면 GET 및 POST 요청의 캐시 ID에 요청 유형이 추가되지 않습니다. 기본적으로 GET 및 POST 요청의 캐시 ID에 자동으로 요청 유형이 추가됩니다. ignore-char-encoding 서블릿 및 포틀릿 True 또는 False. 기본값은 false입니다. 특성이 true로 설정되면 UTF-8 문자 인코딩이 캐시 ID에 추가되지 않습니다. UTF-8 문자 인코딩을 캐시 ID에 추가하면 여러 단편의 사본으로 인해 캐시 크기가 불필요하게 증가할 수 있습니다. do-not-cache 서블릿 및 포틀릿 상위에 의해 캐시 또는 이용되지 않는 단편을 정의합니다.
or<cache-entry> ... <property name="do-not-cache">true</property>
<cache-id> <property name="do-not-cache">true</property> </cache-id> </cache-entry>
- cache-id
- 오브젝트를 캐시화하려면 Application Server가 해당 오브젝트의 다른
호출에 대해 고유 ID를 생성하는 방법을 알아야 합니다. 이들 ID는
사용자가 직접 작성한 사용자 정의 Java 코드나,
각 캐시 항목의 캐시 정책에 정의된 규칙을 써서 작성합니다.
캐시 항목마다 캐시 ID가 여러 개 있으며, 이들은 다음 상황이 발생할
때까지 순서대로 실행됩니다.
- 규칙이 공백이 아닌 캐시 ID를 리턴합니다. 또는
- 실행할 추가 규칙이 없습니다.
각 cache-id 요소는 오브젝트를 캐싱하는 규칙을 정의하며 하위 요소 컴포넌트인, timeout, inactivity, priority, property, idgenerator 및 metadatagenerator로 구성됩니다. 다음은 cache-id 요소의 예입니다.<cache-id> component*| timeout? | inactivity? | priority? | property* | idgenerator? | metadatagenerator? </cache-id>
- 컴포넌트 부속 요소
컴포넌트 부속 요소는 캐시 ID의 한 부분을 생성하는 데 사용됩니다. 컴포넌트 부속 요소는 속성 id, type 및 ignore-value와 index, method, field, required, value, not-value 등의 요소로 구성되어 있습니다.
- id 속성을 사용하여 컴포넌트를 식별하십시오.
- type 속성을 사용하여 컴포넌트의 유형을 식별하십시오. 다음
표는 type의 값을 나열합니다.
문제점 방지: cachespec.xml 파일에서 매개변수 컴포넌트 하위 요소가 지정되면, 웹 컨테이너는 요청 오브젝트에서 얻은 인코딩 설정을 기초로 문자 인코딩을 설정합니다. 그 후에 서블릿이 setCharacterEncoding 메소드를 호출하면, 이미 설정된 문자 인코딩은 변경할 수 없으므로 메소드가 영향을 미치지 않습니다. gotcha
표 3. 유형 값. 유형 유효한 클래스 및 의미 유형 유효한 클래스 의미 method 명령 명령 또는 오브젝트에서 표시된 메소드를 호출합니다. field 명령 명령 또는 오브젝트에서 이름 지정된 필드를 검색합니다. parameter 서블릿 및 포틀릿 요청 오브젝트에서 이름 지정된 매개변수 값을 검색합니다. parameter-list 서블릿 및 포틀릿 이름 지정된 매개변수의 값 목록을 검색합니다. 문제점 방지: 캐시는 이 이름의 모든 매개변수에 대한 값을 보유하며 모든 해당 값을 보유한 순서대로 사용하여 캐시 ID를 작성합니다. gotcha
session 서블릿 및 포틀릿 HTTP 세션에서 이름 지정된 값을 검색합니다. cookie Servlet 이름 지정된 쿠키 값을 검색합니다. attribute 서블릿 및 포틀릿 이름 지정된 요청 속성을 검색합니다. header 서블릿, 웹 서비스 및 포틀릿 이름 지정된 요청 헤더를 검색합니다. pathInfo Servlet 요청에서 pathInfo 요소를 검색합니다. servletpath Servlet 서블릿 경로를 검색합니다. locale 서블릿 및 포틀릿 요청 로케일을 검색합니다. 주의: locale 컴포넌트는 RRD 사용 시 edgecacheable 항목에만 허용 가능합니다. 모든 다른 ESI 버전에는 locale 컴포넌트가 유효하지 않습니다.requestType 서블릿 및 포틀릿 요청에서 HTTP 요청 메소드를 검색합니다. 주의: requestType 컴포넌트는 RRD 사용 시 edgecacheable 항목에만 허용 가능합니다. 모든 다른 ESI 버전에는 requestType 컴포넌트가 유효하지 않습니다.tiles_attribute 서블릿 및 포틀릿 바둑판식 배열에서 속성 값을 검색합니다. SOAPEnvelope 웹 서비스 및 웹 서비스 클라이언트 캐시 웹 서비스 요청에서 SOAPEnvelope 요소를 검색합니다. Hash의 ID 속성은 SOAPEnvelope 요소의 해시를 사용하는 반면, Literal은 SOAPEnvelope 요소를 수신된 대로 사용합니다. SOAPAction 웹 서비스 웹 서비스 요청의 경우, SOAPAction 헤더를 검색합니다(사용 가능한 경우). serviceOperation 웹 서비스 웹 서비스 요청에 대한 서비스 조작을 검색합니다. serviceOperationParameter 웹 서비스 웹 서비스 요청에서 지정된 매개변수를 검색합니다. operation 웹 서비스 클라이언트 캐시 WSDL(Web Services Description Language) 파일의 조작 유형을 표시합니다. id 속성이 무시되며 값은 조작 또는 메소드 이름입니다. 조작의 네임스페이스가 지정되면 값을 namespaceOfOperation:nameOfOperation으로 형식화하십시오. part 웹 서비스 클라이언트 캐시 WSDL 파일의 입력 메시지 파트 또는 요청 매개변수를 표시합니다. id 속성은 파트 또는 매개변수 이름이고 value는 파트 또는 매개변수 값입니다. SOAPHeaderEntry 웹 서비스 클라이언트 캐시 웹 서비스 요청의 SOAP(Simple Object Access Protocol) 헤더에서 특수 정보를 검색합니다. id 속성은 항목의 이름을 지정합니다. 또한 SOAP 요청의 SOAP 헤더 항목에는 com.ibm.websphere.cache가 포함된 actor 속성이 있어야 합니다. 예를 들어 다음과 같습니다. <soapenv:Header> <getQuote soapenv:actor="com.ibm.websphere.cache">IBM</getQuote> </soapenv:Header>
portletSession 포틀릿 포틀릿 세션에서 이름 지정된 값을 검색합니다. portletWindowId 포틀릿 포틀릿 요청 오브젝트에서 포틀릿 창 ID를 검색합니다. portletMode 포틀릿 포틀릿 요청 오브젝트에서 포틀릿 모드를 검색합니다. portletWindowsState 포틀릿 포틀릿 요청 오브젝트에서 포틀릿 창 상태를 검색합니다. sessionID 서블릿 및 포틀릿 HTTP 세션 ID를 검색합니다. - ignore-value 속성을 사용하여 이 컴포넌트가 리턴한 값을 캐시 ID 정보에 사용할지 여부를 지정하십시오. 이 속성은 기본값이 false인 선택적 속성입니다. 값이 true이면, 컴포넌트의 ID만 캐시 ID를 작성할 때 사용하거나 종속성 또는 무효화 ID를 작성할 때는 아무런 출력도 사용하지 않습니다.
- method 요소를 사용하여 리턴된 오브젝트에 대해 void 메소드를 호출하십시오.
임의 조합으로 메소드 및 필드 오브젝트를 무한히 중첩시킬 수 있습니다.
메소드는 공용이어야 하며 에지 캐시 가능 컴포넌트에 유효하지 않습니다.
예를 들어, 다음과 같습니다.
<component id="getUser" type="method"><method>getUserInfo <method>getName</method></method></component>
이 메소드는 getUser().getUserInfo().getName()에 해당합니다.
오브젝트를 리턴할 수 있는 컴포넌트 유형 속성, 메소드 또는 필드의 경우에, 리턴되는 오브젝트가 콜렉션 또는 배열이면 ID는 콜렉션 또는 배열에서 요소의 쉼표로 분리된 목록으로 작성됩니다. 예를 들어, 요청 속성 사용자가 배열 [a, b]를 리턴하며 캐시 항목이 다음 예와 같이 정의된 경우,
캐시 ID에는 문자열 users: a,b가 들어 있습니다. 종속성 ID는 dep: a,b입니다.<cache-entry> <class>servlet</class> <name>xxx.jsp</name> <cache-id> . . <component id="users" type="attribute"> <required>true</required> </component> . . </cache-id> <dependency-id>dep <component id="users" type="attribute"> <required>true</required> </component> </dependency-id> </cache-entry>
컴포넌트 유형의 multipleIDs 속성을 사용하면 다중 종속성 ID(또는 무효화 ID)가 콜렉션 또는 배열의 항목을 기반으로 하여 지정하고 생성할 수 있습니다. 예를 들어 다음과 같습니다.
캐시 정책은 다음의 종속성 ID를 생성합니다.<cache-entry> <class>servlet</class> <name>xxx.jsp</name> <cache-id> . . <component id="users" type="attribute"> <required>true</required> </component> . . </cache-id> <dependency-id>dep <component id="users" type="attribute" multipleIDs="true"> <required>true</required> </component> </dependency-id> </cache-entry>
- dep:a,b
- dep:a
- dep:b
콜렉션 또는 배열의 지정된 색인 위치에 있는 요소의 값만, 작성 중인 ID에 추가하려면 이전 컴포넌트 유형의 색인 요소를 사용하십시오.
이전 캐시 정책은 캐시 ID에서 사용되는 users: b 컴포넌트를 생성합니다. <메소드> 요소를 사용하여 리턴된 오브젝트에 대해 void 메소드를 호출하십시오.<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>
- field 요소를 사용하여 리턴된 오브젝트에 있는 필드에 액세스하십시오.
임의 조합으로 메소드 및 필드 오브젝트를 무한히 중첩시킬 수 있습니다.
필드는 공용이어야 합니다. 이 필드는 에지 캐시 가능 컴포넌트에
유효하지 않습니다. 예를 들어, 다음과 같습니다.
<component id="getUser" type="method"><method>getUserInfo <field>name</field></method></component>
이 메소드는 getUser().getUserInfo().name 메소드에 해당합니다.
- required 요소를 사용하면 이 컴포넌트가 이 캐시 ID가 올바른
캐시를 나타내도록 널(Null)이 아닌 값을 리턴해야만 하는지 여부를
지정하십시오. true로 설정된 경우, 이 컴포넌트는
이 캐시 ID가 올바른 캐시 ID를 나타내도록 널이 아닌 값을 리턴해야 합니다.
false로 설정된 경우, 캐시 ID 형성이
널이 아닌 값이 사용되며, 널값은 이 컴포넌트가 ID 형성에
전혀 사용되지 않음을 의미합니다.
예를 들어 다음과 같습니다.
<required>true</required>
- value 요소를 사용하여 캐시 ID 정보에 이 컴포넌트를 사용하는 데
일치해야 하는 값을 지정하십시오. 예를 들어 다음과 같습니다.
<component id="getUser" type="method"><value>blue</value> <value>red</value> </component>
- not-value 요소를 사용하여 캐시 ID 형성에 이 컴포넌트를 사용하는 데
일치하지 않아야 하는 값을 지정하십시오. 이 메소드는 value 요소와
유사하지만 대신 캐싱에서 정의된 값을 공개합니다.
유효하지 않은 둘 이상의 값이 존재할 경우 복수의 not-value 요소를
사용할 수 있습니다. 예를 들어 다음과 같습니다.
<component id="getUser" type="method"> <required>true</required> <not-value>blue</not-value> <not-value>red</not-value></component>
component 부속 요소에는 method 및 field 요소가 있거나 value 요소 또는 not-value 요소 중 하나가 있어야 합니다. method 및 field 요소는 명령에만 적용됩니다. 다음 예제는 component 부속 요소의 속성을 나타냅니다.<component id="isValid" type="method" ignore-value="true"><component>
- 제한시간 부속 요소
- 제한시간 부속 요소는 캐시 항목에 대한 절대 TTL(Time to Live) 값을
지정하는 데 사용됩니다. 예를 들어, 다음과 같습니다.
<timeout>value</timeout>
여기서 value는 유지할 캐시 항목의 시간(초 단위)입니다. 메모리에 있는 캐시 항목은 해당 항목이 메모리에 남아 있는 한 무한정 보존됩니다. 디스크에 저장된 캐시 항목은 24시간 동안 액세스되지 않으면 제거됩니다.
- 비활성 부속 요소
- 비활성 부속 요소는 캐시 항목에 액세스한 마지막 시간을
기반으로 하여 캐시 항목에 대한 TTL(Time to Live) 값을 지정하는 데
사용됩니다. 이는 cache-id 요소의 부속 요소입니다.
여기서 value는 마지막 캐시 히트 이후에 캐시에서 캐시 항목이 유지되는 시간(초 단위)입니다.<inactivity>value</inactivity>
- 우선순위 부속 요소
- 우선순위 부속 요소는 캐시에서 캐시 항목의 우선순위를 지정하는 데
사용됩니다. 우선순위 가중치는 캐시의 스토리지 영역이 부족해지면
캐시의 LRU 알고리즘이 사용하여 캐시로부터 제거할
항목을 결정합니다. 예를 들어, 다음과 같습니다.
<priority>value</priority>
여기서 value는 1 - 16 사이의 양의 정수입니다.
- 샘플
- 다음 샘플은 캐시에서 캐시 항목을 최소 35초, 최대 180초
동안 유지합니다. 캐시 항목이 각각의
35초 비활성 기간 내에 액세스되면 비활성 기간은 또 다른
35초 동안 확장됩니다. 그러나 timeout 요소도
구성되면, 캐시 항목이 항상 180초 이후에
무효화됩니다. 35초 이내에 캐시 항목에 액세스하지 않으면
항목이 캐시에서 제거됩니다.
<cache-id> <component id="timeout" type="parameter"> <required>true</required> </component> <timeout>180</timeout> <inactivity>35</inactivity> <priority>1</priority> </cache-id>
- 다음 샘플은 캐시에서 캐시 항목을 최소 600초
동안 유지합니다. 캐시 항목이 각각의 600초 내에
액세스되면 비활성 기간은 또 다른 600초 동안
확장됩니다. 캐시 항목이 600초 이내에 액세스되지 않으면
캐시 항목이 캐시에서 제거됩니다.
<cache-id> <component id="timeout" type="parameter"> <required>true</required> </component> <inactivity>600</inactivity> <priority>1</priority> </cache-id>
- 제한시간 기간이 비활성 기간보다 적으므로 다음
샘플에서 비활성에 대한 값에는 의미가 없습니다. 캐시
항목에 액세스하는 빈도와 무관하게 캐시 항목은 항상
180초 이후에 무효화됩니다.
<cache-id> <component id="timeout" type="parameter"> <required>true</required> </component> <timeout>180</timeout> <inactivity>600</inactivity> <priority>1</priority> </cache-id>
- 특성 부속 요소
- 특성 부속 요소는 캐시 항목의 일반 특성을 지정하는 데
사용됩니다. 예를 들어, 다음과 같습니다.
<property name="key">value</property>
여기서, key는 정의 중인 특성의 이름이며 value는 해당 값입니다.
예를 들어 다음과 같습니다.<property name="description">The Snoop Servlet</property>
표 4. 특성 부속 요소 값. 특성 유효 클래스 및 의미 특성 유효한 클래스 의미 sharing-policy/timeout/priority 모두 요청 내용이 이 캐시 ID와 일치하면 보관 중인 캐시 입력에 맞는 설정을 대체합니다. EdgeCacheable Servlet 요청 내용이 이 캐시 ID와 일치하면 보관 중인 캐시 입력에 맞는 설정을 대체합니다.
idgenerator 및 metadatagenerator 부속 요소
<idgenerator> class name </idgenerator>
여기서 class
name은 사용될 클래스의 완전한 이름입니다. 이 생성자 클래스를 공유 라이브러리에 정의하십시오. <metadatagenerator> classname </metadatagenerator>
이
예에서 클래스 이름은 사용될 클래스의 완전한
이름입니다. 이 생성자 클래스를 공유 라이브러리에 정의하십시오. dependency-id 요소
dependency-id 요소를 사용하여 복수 캐시 항목을 동일한 그룹 ID에 연관시키는 추가 캐시 그룹 ID를 지정할 수 있습니다.
dependency-id 요소의 값은 종속성 ID 기본 문자열을 해당 컴포넌트 요소로 리턴된 값과 연결하여 생성됩니다. 필수 컴포넌트에서 널값을 리턴하면 전체 종속성이 생성되지 않으며 사용되지 않습니다. 동적 캐시 API를 통해 명시적으로 종속성 ID를 유효화하거나, 무효화 요소를 사용하십시오. 하나의 캐시 항목 요소에 여러 종속성 ID 규칙이 존재할 수 있습니다. 모든 종속성 규칙은 개별적으로 실행됩니다.
invalidation 요소
<invalidation>component* | invalidationgenerator? </invalidation>
invalidationgenerator 부속 요소
<invalidationgenerator>class name</invalidationgenerator>
이
예에서 classname은 com.ibm.websphere.cache.webservices.InvalidationGenerator
인터페이스를 구현하는 클래스의 완전한
이름입니다. 이 생성자 클래스를 공유 라이브러리에 정의하십시오. cachespec.xml 파일 예제
<?xml version="1.0" ?> <!DOCTYPE cache SYSTEM "cachespec.dtd"> <cache> <cache-entry> <class>servlet</class> <name>/MyDefinedServlet</name> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/MyAnnotatedServlet</name> <cache-id> <timeout>3600</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/MyProgrammaticServlet</name> <cache-id> <timeout>3600</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/MyProgrammaticServlet2</name> <cache-id> <timeout>3600</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/MyProgrammaticServlet3</name> <cache-id> <timeout>3600</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/StartAsyncDispatchCompleteAltPath</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>testDoNotConsume</value> </component> <property name="do-not-consume">true</property> <timeout>5000</timeout> <priority>2</priority> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>testCacheChildONLY</value> </component> <property name="do-not-consume">true</property> <timeout>5000</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/StartAsyncDispatchComplete</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>testDoNotConsume</value> </component> <property name="consume-subfragments">false</property> <timeout>5000</timeout> <priority>2</priority> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>testConsumeSubFragments</value> </component> <property name="consume-subfragments">true</property> <timeout>5000</timeout> <priority>2</priority> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>testTimeout</value> </component> <property name="do-not-consume">true</property> <timeout>5000</timeout> <priority>2</priority> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>testError</value> </component> <property name="do-not-consume">true</property> <timeout>5000</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/DiscardParent.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/AttrA1.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/AttrA2.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/AttrA3.jsp</name> <property name="consume-subfragments">true</property> <property name="save-attributes"> false <exclude>saveThisAttr</exclude> </property> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/AttrC3.jsp</name> <property name="do-not-cache">true</property> <property name="save-attributes">false</property> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/CacheTest.jsp</name> <cache-id> <component id="output" type="attribute"> <required>true</required> </component> <timeout>180</timeout> </cache-id> <dependency-id> response <component id="output" type="attribute"> <required>true</required> </component> </dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>Include1.jsp</name> <cache-id> <component id="outputForInclude1" type="attribute"> <required>true</required> </component> <timeout>120</timeout> <priority>2</priority> </cache-id> <dependency-id> response <component id="output" type="attribute"> <required>true</required> </component> </dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESIParent.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="parm1" type="parameter" /> <timeout>180</timeout> <priority>2</priority> </cache-id> <dependency-id> dep1 <component id="parm1" type="parameter" /> </dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESIChild.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="parm2" type="parameter" /> <timeout>180</timeout> <priority>2</priority> </cache-id> <dependency-id> dep4 <component id="parm2" type="parameter" /> </dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESI1Cached.jsp</name> <cache-id> <component id="param2" type="parameter"> <required>true</required> </component> <timeout>180</timeout> <priority>2</priority> </cache-id> <dependency-id>ESI1</dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESI1Edgeable.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="param2" type="parameter"> <required>true</required> </component> <timeout>180</timeout> <priority>2</priority> </cache-id> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>180</timeout> <priority>2</priority> </cache-id> <dependency-id>ESI1</dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESI2Cached.jsp</name> <cache-id> <timeout>240</timeout> <priority>2</priority> </cache-id> <dependency-id>ESI2</dependency-id> </cache-entry> <cache-entry> <property name="EdgeCacheable">true</property> <name>ESI2Edgeable.jsp</name> <class>servlet</class> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>180</timeout> <priority>2</priority> </cache-id> <cache-id> <timeout>180</timeout> <priority>2</priority> </cache-id> <dependency-id>ESI2</dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESI3Cached.jsp</name> <cache-id> <timeout>60</timeout> <priority>2</priority> </cache-id> <dependency-id>ESI3</dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESI3Edgeable.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>60</timeout> <priority>2</priority> </cache-id> <cache-id> <timeout>60</timeout> <priority>2</priority> </cache-id> <dependency-id>ESI3</dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESI4Edgeable.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>60</timeout> <priority>2</priority> </cache-id> <cache-id> <timeout>60</timeout> <priority>2</priority> </cache-id> <dependency-id>ESI4</dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESI5Edgeable.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>60</timeout> <priority>2</priority> </cache-id> <cache-id> <timeout>60</timeout> <priority>2</priority> </cache-id> <dependency-id>ESI5</dependency-id> </cache-entry> <!--Test ESI w/ wildcard character--> <cache-entry> <class>servlet</class> <name>ESI6Edgeable.jsp</name> <cache-id> <component id="*" type="parameter"> <required>false</required> </component> <timeout>180</timeout> <property name="EdgeCacheable">true</property> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>ESI7Edgeable.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>60</timeout> <priority>2</priority> </cache-id> <cache-id> <timeout>60</timeout> <priority>2</priority> </cache-id> <dependency-id>ESI7</dependency-id> </cache-entry> <cache-entry> <class>webservice</class> <name>/services/CounterService1</name> <sharing-policy>not-shared</sharing-policy> <cache-id> <component id="Request-Hash" type="header"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> <property name="description"> This is SOAP Servlet. </property> </cache-id> <cache-id> <component id="" type="SOAPAction"> <value>urn:lookup</value> </component> <component id="Hash" type="SOAPEnvelope" /> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="" type="serviceOperation"> <value>urn:counterservice1:counter1</value> </component> <component id="Hash" type="SOAPEnvelope" /> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="" type="serviceOperation"> <value>urn:counterservice1:counter1</value> </component> <component id="in" type="serviceOperationParameter"> <value>xxx</value> </component> <component id="Hash" type="SOAPEnvelope" /> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="" type="serviceOperation"> <not-value>urn:counterservice1:counter1</not-value> </component> <component id="in" type="serviceOperationParameter"> <not-value>xxx</not-value> </component> <component id="Hash" type="SOAPEnvelope" /> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="" type="SOAPAction"> <value>urn:lookup</value> </component> <component id="Literal" type="SOAPEnvelope" /> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="" type="SOAPAction"> <value>urn:lookup</value> </component> <component id="Hash" type="SOAPEnvelope" /> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="" type="serviceOperation"> <value>urn:counterservice1:counter1</value> <value>urn:counterservice2:counter2</value> </component> <component id="Hash" type="SOAPEnvelope" /> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="" type="serviceOperation"> <value>urn:counterservice1:counter1</value> </component> <component id="Hash" type="SOAPEnvelope" /> <timeout>0</timeout> <priority>1</priority> </cache-id> <dependency-id>depId</dependency-id> <invalidation> depId <component id="" type="serviceOperation" ignore-value="true"> <value>urn:counterservice1:reset1</value> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>TimeoutPos.jsp</name> <cache-id> <timeout>10</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>com.ibm.ws.cache.servlet.pathinfo1.class</name> <cache-id> <component id="" type="pathinfo"> <required>true</required> </component> <component id="genPathInfo" type="parameter"> <required>false</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>com.ibm.ws.cache.servlet.pathinfo2.class</name> <cache-id> <component id="" type="pathinfo"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/pathinfo1/xxxx</name> <cache-id> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/pathinfo1/yyyy</name> <cache-id> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <sharing-policy>shared-pull</sharing-policy> <name>com.ibm.ws.cache.servlet.reqparmtest.class</name> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="timeout" type="parameter"> <required>true</required> </component> <timeout>15</timeout> <priority>1</priority> </cache-id> <dependency-id> reqparm <component id="arg1" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> reqparm <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <sharing-policy>shared-push</sharing-policy> <name> com.ibm.ws.cache.servlet.reqparmtest_sharePush.class </name> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="timeout" type="parameter"> <required>true</required> </component> <timeout>15</timeout> <priority>1</priority> </cache-id> <dependency-id> reqparm <component id="arg1" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> reqparm <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>com.ibm.ws.cache.servlet.reqattrtest.class</name> <cache-id> <component id="arg" type="attribute"> <required>false</required> </component> <component id="IAmRequired" type="attribute" ignore-value="true"> <required>true</required> </component> <component id="int" type="attribute"> <method>intValue</method> <required>false</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/STMTestServlet</name> <sharing-policy>shared-push</sharing-policy> <cache-id> <component id="parm" type="parameter"> <required>false</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-instance name="services/cache/servletInstance_1"> <cache-entry> <class>servlet</class> <name>/STMTestServlet_shareNone</name> <sharing-policy>not-shared</sharing-policy> <cache-id> <component id="parm" type="parameter"> <required>false</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/STMTestServlet_shareDefault</name> <cache-id> <component id="parm" type="parameter"> <required>false</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/STMTestServlet_sharePush</name> <sharing-policy>shared-push</sharing-policy> <cache-id> <component id="parm" type="parameter"> <required>false</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/STMTestServlet_sharePull</name> <sharing-policy>shared-pull</sharing-policy> <cache-id> <component id="parm" type="parameter"> <required>false</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/STMTestServlet_sharePushPull</name> <sharing-policy>shared-push-pull</sharing-policy> <cache-id> <component id="parm" type="parameter"> <required>false</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>SITimeStamp</name> <cache-id> <component id="parm" type="parameter" /> <timeout>180</timeout> <priority>2</priority> </cache-id> </cache-entry> </cache-instance> <cache-entry> <class>servlet</class> <name>/CloseAndFlush</name> <cache-id> <component id="action" type="parameter"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-instance name="services/cache/servletInstance_1"> <cache-entry> <class>servlet</class> <name>/TimeStamp</name> <sharing-policy>not-shared</sharing-policy> <cache-id> <component id="timeout" type="parameter"> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="inactivity0" type="parameter"> <required>true</required> </component> <timeout>30</timeout> <inactivity>0</inactivity> <priority>1</priority> </cache-id> <cache-id> <component id="inactivity1" type="parameter"> <required>true</required> </component> <timeout>60</timeout> <inactivity>30</inactivity> <priority>1</priority> </cache-id> <cache-id> <component id="inactivity2" type="parameter"> <required>true</required> </component> <inactivity>30</inactivity> <priority>1</priority> </cache-id> <cache-id> <component id="inactivity3" type="parameter"> <required>true</required> </component> <timeout>30</timeout> <inactivity>60</inactivity> <priority>1</priority> </cache-id> <cache-id> <property name="ignore-get-post">false</property> <component id="ignore" type="parameter"> <value>false</value> </component> </cache-id> <cache-id> <property name="ignore-get-post">true</property> <component id="ignore" type="parameter"> <value>true</value> </component> </cache-id> <dependency-id> timestamp <component id="arg1" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> timestamp <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> </cache-instance> <cache-entry> <class>servlet</class> <name>/TimeStamp1</name> <property name="persist-to-disk">false</property> <sharing-policy>not-shared</sharing-policy> <cache-id> <component id="timeout" type="parameter"> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> <dependency-id> timestamp <component id="arg1" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> timestamp <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/TimeStamp2</name> <property name="persist-to-disk">false</property> <sharing-policy>not-shared</sharing-policy> <cache-id> <component id="timeout" type="parameter"> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> <dependency-id> timestamp2 <component id="arg1" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> timestamp2 <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-instance name="services/cache/servletInstance_1"> <cache-entry> <class>command</class> <name>com.ibm.ws.cache.command.MyQuoteCommand.class</name> <cache-id> <timeout>0</timeout> <priority>3</priority> <component id="getTicker" type="method" /> </cache-id> <dependency-id>MyQuoteTicker</dependency-id> </cache-entry> </cache-instance> <cache-entry> <class>command</class> <name>com.ibm.ws.cache.command.QuoteCommand.class</name> <cache-id> <timeout>180</timeout> <priority>3</priority> <component id="getTicker" type="method" /> </cache-id> <dependency-id> ticker <component id="getTicker" type="method" /> </dependency-id> </cache-entry> <cache-entry> <class>command</class> <name>com.ibm.ws.cache.command.QuoteCommandComplex.class</name> <cache-id> <timeout>240</timeout> <priority>3</priority> <component id="getComplex" type="method"> <method>getTicker</method> </component> </cache-id> <dependency-id> ticker <component id="getComplex" type="method"> <field>ticker</field> </component> </dependency-id> </cache-entry> <cache-entry> <class>command</class> <name>com.ibm.ws.cache.command.QuoteCommandIdGen</name> <cache-id> <timeout>120</timeout> <priority>3</priority> <idgenerator> com.ibm.ws.cache.command.QuoteIdGenerator </idgenerator> </cache-id> </cache-entry> <cache-entry> <class>command</class> <name>com.ibm.ws.cache.command.NoOutputPropCommand</name> <cache-id> <timeout>180</timeout> <priority>3</priority> <component id="getTicker" type="method" /> </cache-id> <dependency-id> ticker <component id="getTicker" type="method" /> </dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/bufferwritercached</name> <cache-id> <timeout>0</timeout> <priority>3</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/bufferstreamcached</name> <cache-id> <timeout>0</timeout> <priority>3</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/BasicServlet</name> <cache-id> <component id="testCookie" type="cookie"> <required>true</required> </component> <timeout>30</timeout> </cache-id> <cache-id> <component id="action" type="parameter" /> <component id="" type="locale" /> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>command</class> <name>com.ibm.ws.cache.command.WatchListCommand</name> <cache-id> <timeout>360</timeout> <priority>4</priority> <component id="userGroup" type="field" /> <component id="userNumber" type="field" /> </cache-id> <dependency-id> USER <component id="userGroup" type="field" /> <component id="userNumber" type="field" /> </dependency-id> </cache-entry> <cache-entry> <class>command</class> <name>com.ibm.ws.cache.command.WatchListCommandMixed</name> <cache-id> <timeout>360</timeout> <priority>4</priority> <component id="userGroup" type="field" /> <component id="getUserNumber" type="method" /> </cache-id> <dependency-id> USER <component id="userGroup" type="field" /> <component id="getUserNumber" type="method" /> </dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>com.ibm.ws.cache.command.CommandTestServlet.class</name> <invalidation> USER <component id="action" type="parameter" ignore-value="true"> <value>invalidate</value> </component> <component id="group" type="parameter" /> <component id="user" type="parameter" /> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>consumeParent.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>0</timeout> <priority>4</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>consumeParent2.jsp</name> <cache-id> <timeout>0</timeout> <priority>4</priority> <property name="consume-subfragments">true</property> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>consumeParentForward.jsp</name> <cache-id> <timeout>0</timeout> <priority>4</priority> <property name="consume-subfragments">true</property> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/esiForwardInclude.jsp</name> <cache-id> <property name="EdgeCacheable">true</property> <timeout>600</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/esiParentConsume.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <property name="EdgeCacheable">true</property> <timeout>600</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/alturlcontroller1</name> <property name="EdgeCacheable">true</property> <cache-id> <timeout>600</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/AltUrlTest2.jsp</name> <property name="EdgeCacheable">true</property> <property name="alternate_url">/alturlcontroller2</property> <cache-id> <timeout>600</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/AltUrlTest3.jsp</name> <property name="EdgeCacheable">true</property> <property name="alternate_url">/alturlcontroller3</property> <cache-id> <timeout>600</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/AltUrlTest4.jsp</name> <property name="EdgeCacheable">true</property> <property name="alternate_url">/alturlcontroller4</property> <cache-id> <timeout>600</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/AltUrlTest5.jsp</name> <cache-id> <timeout>600</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>com.ibm.ws.cache.servlet.reqparmlisttest.class</name> <cache-id> <component id="parm" type="parameter-list"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/SaveAttributesParent.jsp</name> <sharing-policy>not-shared</sharing-policy> <property name="consume-subfragments">false</property> <property name="save-attributes">false</property> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> <dependency-id> timestamp <component id="arg1" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> timestamp <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/ReqAttA.jsp</name> <cache-id> <component id="ReqAttr" type="attribute"> <required>true</required> </component> <timeout>0</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/ServletPathTest</name> <sharing-policy>not-shared</sharing-policy> <cache-id> <component id="" type="servletpath"> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/ESICookie.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/ESIQueryStringParent.jsp</name> <cache-id> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/ESIQueryStringChild.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="scenario" type="parameter"> <required>true</required> </component> <component id="parm1" type="parameter"> <required>true</required> </component> <component id="testCookie" type="cookie"> <required>true</required> </component> <timeout>180</timeout> <priority>1</priority> </cache-id> <cache-id> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>com.ibm.ws.cache.servlet.IncludeTimeStamp.class</name> <sharing-policy>not-shared</sharing-policy> <cache-id> <component id="type" type="attribute"> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>JAXRPCClient</class> <name> http://localhost:9080/dynacachetests/services/Counter </name> <cache-id> <component id="http://schemas.xmlsoap.org/soap/envelope/:Counter" type="SOAPHeaderEntry" /> <timeout>0</timeout> </cache-id> <cache-id> <component id="http://schemas.xmlsoap.org/soap/envelope/:urn:headerNS:Counter" type="SOAPHeaderEntry" /> <timeout>0</timeout> </cache-id> <cache-id> <component id="" type="operation"> <value> http://counter.webservices.cache.ws.ibm.com:counter1 </value> </component> <component id="in" type="part"></component> <timeout>0</timeout> </cache-id> <cache-id> <component id="Hash" type="SOAPEnvelope" /> <timeout>0</timeout> </cache-id> <dependency-id> Counter_in <component id="http://schemas.xmlsoap.org/soap/envelope/:urn:headerNS:Counter" type="SOAPHeaderEntry"> <required>true</required> </component> </dependency-id> <invalidation> Counter_in <component id="http://schemas.xmlsoap.org/soap/envelope/:urn:headerNS:Reset" type="SOAPHeaderEntry"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>JAXRPCClient</class> <name> http://localhost:9080/dynacachetests/services/AddressBookBean </name> <cache-id> <component id="" type="operation"> <value> http://addr.webservices.cache.ws.ibm.com:getAddressFromName </value> </component> <component id="name" type="part"></component> <component id="country" type="part"></component> <timeout>0</timeout> </cache-id> <dependency-id> AddressBook <component id="" type="operation" ignore-value="true"> <value> http://addr.webservices.cache.ws.ibm.com:getAddressFromName </value> <required>true</required> </component> <component id="name" type="part"> <required>true</required> </component> </dependency-id> <invalidation> AddressBook <component id="" type="operation" ignore-value="true"> <value> http://addr.webservices.cache.ws.ibm.com:invalidate </value> <required>true</required> </component> <component id="name" type="part"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>JAXRPCClient</class> <name> http://localhost:9080/dynacachetests/services/StockQuote </name> <sharing-policy>shared-push</sharing-policy> <cache-id> <idgenerator> com.ibm.ws.cache.webservices.stock.QuoteIdGenerator </idgenerator> <metadatagenerator> com.ibm.ws.cache.webservices.stock.QuoteMetaDataGenerator </metadatagenerator> <priority>5</priority> </cache-id> <invalidation> http://localhost:9080/dynacachetests/services/StockQuote <invalidationgenerator> com.ibm.ws.cache.webservices.stock.QuoteInvalidationGenerator </invalidationgenerator> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/basic.do</name> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> <dependency-id> struts <component id="arg1" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> struts <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/forward.do</name> <cache-id> <property name="EdgeCacheable">true</property> <component id="type" type="parameter"> <required>true</required> <value>esiParentConsume</value> </component> <component id="JSESSIONID" type="cookie" /> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/strutsTimeStamp.jsp</name> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/STTimeStamp</name> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/child1.do</name> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/stConsumeFragment.do</name> <cache-id> <component id="whoami" type="parameter"> <required>true</required> <value>grandparent</value> </component> <property name="consume-subfragments">true</property> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/stConsumeParent.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/stDNCFragment.do</name> <property name="consume-subfragments">true</property> <cache-id> <component id="whoami" type="parameter"> <required>true</required> <value>grandparent</value> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> <dependency-id> DNC <component id="whoami" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> DNC <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/stDNCGrandChild.jsp</name> <property name="do-not-consume">true</property> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/stSaveAttrParent.do</name> <property name="save-attributes">false</property> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/stDisplayInfo.jsp</name> <cache-id> <component id="lbean" type="session"> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/tileParent.jsp</name> <cache-id> <component id="type" type="parameter"> <required>true</required> <value>strut</value> </component> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/tileChild.jsp</name> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/tileChildServlet</name> <cache-id> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/tileEsiParent.jsp</name> <cache-id> <component id="type" type="parameter"> <value>edgeable</value> </component> <property name="EdgeCacheable">true</property> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/tileEsiChild.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="arg1" type="parameter"> <required>true></required> </component> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/tileGrandParent.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/tileDNCGrandParent.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>180</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/tileCSFChild1.jsp</name> <property name="do-not-consume">true</property> <cache-id> <component id="arg1" type="parameter"> <value>DNC</value> </component> <timeout>180</timeout> <priority>1</priority> </cache-id> <dependency-id> DNC <component id="arg1" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> DNC <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/tileSaveAttrParent.jsp</name> <property name="save-attributes">false</property> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/header.jsp</name> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/body.jsp</name> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/footer.jsp</name> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/testSTDefinition.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/SavAttrParent/TrueExclude</name> <property name="save-attributes"> true <exclude>att1</exclude> </property> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/SavAttrParent/FalseExclude</name> <property name="save-attributes"> false <exclude>att1</exclude> </property> <cache-id> <timeout>35</timeout> <priority>1</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/DCP</name> <cache-id> <timeout>180</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/DCPParent</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>180</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/DCPGrandParent</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>180</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-instance name="services/cache/servletInstance_2"> <cache-entry> <class>servlet</class> <name>/TimeStampCM2</name> <sharing-policy>not-shared</sharing-policy> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> </cache-id> </cache-entry> </cache-instance> <cache-instance name="services/cache/servletInstance_3"> <cache-entry> <class>servlet</class> <name>/TimeStampCM3</name> <sharing-policy>not-shared</sharing-policy> <cache-id> <component id="arg1" type="parameter"> <required>true</required> </component> </cache-id> </cache-entry> </cache-instance> <cache-instance name="services/cache/servletInstance_4"> <cache-entry> <class>servlet</class> <name>ServletInstance_Esi1_ESIParent.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="parm1" type="parameter" /> <timeout>180</timeout> <priority>2</priority> </cache-id> <dependency-id> ci_dep1 <component id="parm1" type="parameter" /> </dependency-id> </cache-entry> </cache-instance> <cache-instance name="services/cache/servletInstance_5"> <cache-entry> <class>servlet</class> <name>ServletInstance_Esi2_ESIChild.jsp</name> <property name="EdgeCacheable">true</property> <cache-id> <component id="parm2" type="parameter" /> <timeout>180</timeout> <priority>2</priority> </cache-id> <dependency-id> ci_dep4 <component id="parm2" type="parameter" /> </dependency-id> </cache-entry> </cache-instance> <cache-entry> <class>servlet</class> <name>JspRecompileTest.jsp</name> <cache-id> <component id="parm1" type="parameter" /> <timeout>180</timeout> <priority>2</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/DNCForwardServlet</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test1</value> <value>test2</value> <value>test3</value> <value>test4</value> <value>test6</value> <value>test8</value> <value>test10</value> </component> <property name="consume-subfragments">true</property> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test5</value> </component> <property name="consume-subfragments">true</property> <property name="do-not-consume">true</property> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test7</value> <value>test9</value> </component> <property name="EdgeCacheable">true</property> <property name="consume-subfragments">true</property> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/DNCGrandParent.jsp</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test1</value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test2</value> </component> <property name="consume-subfragments">true</property> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test3</value> </component> <property name="consume-subfragments">true</property> <property name="do-not-consume">true</property> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test5</value> </component> <property name="consume-subfragments">true</property> <property name="do-not-consume">true</property> </cache-id> <dependency-id> DNC3 <component id="test" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> DNC3 <component id="inv3" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/DNCParent1.jsp</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test1</value> <value>test3</value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test2</value> </component> <property name="consume-subfragments">true</property> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test5</value> </component> <property name="consume-subfragments">true</property> <property name="do-not-consume">true</property> </cache-id> <dependency-id> DNC2 <component id="test" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> DNC2 <component id="inv2" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/DNCChild1.jsp</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test3</value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test1</value> <value>test2</value> <value>test4</value> <value>test7</value> </component> <property name="do-not-consume">true</property> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test5</value> </component> <property name="consume-subfragments">true</property> <property name="do-not-consume">true</property> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test6</value> </component> <property name="EdgeCacheable">true</property> <property name="do-not-consume">true</property> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test10</value> </component> <property name="EdgeCacheable">true</property> <property name="do-not-consume">false</property> </cache-id> <dependency-id> DNC1 <component id="test" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> DNC1 <component id="inv1" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/JSTLForwardServlet</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test1</value> </component> <property name="consume-subfragments">true</property> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/JSTLChild1.jsp</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test1</value> </component> <property name="do-not-consume">true</property> </cache-id> <dependency-id> JSTL1 <component id="test" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> JSTL1 <component id="inv1" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/PreviewServlet</name> <property name="EdgeCacheable">true</property> <property name="consume-subfragments">true</property> <cache-id> <priority>3</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/PreviewChildServlet</name> <property name="EdgeCacheable">true</property> <cache-id> <priority>3</priority> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/IsUncacheable.jsp</name> <cache-id> <component id="cacheable" type="parameter"> <required>true</required> <value>true</value> </component> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/Afpa.jsp</name> <property name="ExternalCache">afpa</property> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <!-- CacheMonitor CachePolicies Test entries --> <cache-entry> <class>servlet</class> <name>/CacheMonitorTestServletPolicy</name> <sharing-policy>shared-push</sharing-policy> <property name="EdgeCacheable">true</property> <property name="ExternalCache">CMTextCache</property> <cache-id> <component id="CMTparameter" type="parameter" /> <component id="CMTsession" type="session" /> </cache-id> <cache-id> <component id="CMTcookie" type="cookie" /> <component id="CMTattribute" type="attribute" /> </cache-id> <dependency-id> <component id="CMTparameterList" type="parameter-list" /> </dependency-id> <invalidation> <component id="CMTservletPath" type="servletpath" /> </invalidation> </cache-entry> <cache-entry> <class>command</class> <name>/CacheMonitorTestCommandPolicy</name> <sharing-policy>not-shared</sharing-policy> <property name="ApplicationName">CMTAppName</property> <property name="persist-to-disk">false</property> <property name="delay-invalidations">true</property> <cache-id> <component id="CMTmethod" type="method" /> </cache-id> <cache-id> <component id="CMTfield" type="field" /> </cache-id> <dependency-id> <component id="CMTmethod" type="method" /> </dependency-id> <invalidation> <component id="CMTmethod" type="method" /> </invalidation> </cache-entry> <cache-entry> <class>webservice</class> <name>/CacheMonitorTestWebservicePolicy</name> <sharing-policy>shared-push-pull</sharing-policy> <property name="consume-subfragments">true</property> <property name="do-not-consume">true</property> <cache-id> <component id="CMTSOAPEnvelope" type="SOAPEnvelope" /> <component id="CMTSOAPAction" type="SOAPAction" /> </cache-id> <cache-id> <component id="CMTserviceOperation" type="serviceOperation" /> <component id="CMTserviceOperationParameter" type="serviceOperationParameter" /> </cache-id> <dependency-id> <component id="CMTserviceOperation" type="serviceOperation" /> </dependency-id> <invalidation> <component id="CMTSOAPEnvelope" type="SOAPEnvelope" /> </invalidation> </cache-entry> <cache-entry> <class>portlet</class> <name>/CacheMonitorTestPortletPolicy</name> <sharing-policy>shared-pull</sharing-policy> <property name="save-attributes">false</property> <cache-id> <component id="CMTheader" type="header" /> </cache-id> <cache-id> <component id="CMTlocale" type="locale" /> <component id="CMTrequestType" type="requestType" /> </cache-id> <dependency-id> <component id="CMTrequestType" type="requestType" /> </dependency-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/RangeTimeStamp.jsp</name> <!-- valid specs, will be cached if they match --> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest10</value> </component> <component id="inputvalue" type="parameter"> <required>true</required> <value>9</value> <value> <range low="-20" high="-10" /> </value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest11</value> </component> <component id="inputvalue" type="parameter"> <required>true</required> <value>0</value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest20</value> </component> <component id="inputvalue" type="parameter"> <required>true</required> <not-value> <range low="-20" high="-10" /> </not-value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest21</value> </component> <component id="inputvalue" type="parameter"> <required>true</required> <value> <range low="-50" high="200" /> </value> <not-value> <range low="-20" high="-10" /> </not-value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest22</value> </component> <component id="inputvalue" type="parameter"> <required>true</required> <value> <range low="20" high="30" /> </value> <not-value> <range low="0" high="50" /> </not-value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest23</value> </component> <component id="inputvalue" type="parameter"> <required>true</required> <value> <range low="0" high="30" /> </value> <not-value> <range low="20" high="50" /> </not-value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest24</value> </component> <component id="inputvalue" type="parameter"> <required>true</required> <value> <range low="0" high="10" /> </value> <value> <range low="20" high="30" /> </value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest30</value> </component> <component id="inputvalue" type="parameter"> <required>true</required> <value> <range low="12" high="50" /> <range low="25" high="100" /> </value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest31</value> </component> <component id="inputvalue" type="parameter"> <required>true</required> <value> <range low="12" high="50" /> </value> <value> <range low="25" high="100" /> </value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest32</value> </component> <component id="NoSuchParameterIsPresent" type="parameter"> <value> <range low="12" high="50" /> </value> <value> <range low="25" high="100" /> </value> <required>false</required> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest33</value> </component> <component id="NoSuchParameterIsPresent" type="parameter"> <required>true</required> <value> <range low="12" high="50" /> </value> <value> <range low="25" high="100" /> </value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest34</value> </component> <component id="NoSuchParameterIsPresent" type="parameter"> <required>true</required> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeTest35</value> </component> <component id="inputvalue" type="parameter"> <required>false</required> <value>requiredValue</value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <not-value>RangeTest36</not-value> </component> <component id="inputvalue" type="parameter"> <required>false</required> <value>notThis</value> </component> </cache-id> <!-- <dependency-id> test <component id="test" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> test <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> --> </cache-entry> <!-- ############################################################ --> <cache-entry> <class>servlet</class> <name>/RangeAttrChild.jsp</name> <!-- valid specs, will be cached if they match --> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest10</value> </component> <component id="RangeTestAttribute" type="attribute"> <required>true</required> <value>9</value> <value> <range low="-20" high="-10" /> </value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest11</value> </component> <component id="RangeTestAttribute" type="attribute"> <required>true</required> <value>0</value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest20</value> </component> <component id="RangeTestAttribute" type="attribute"> <required>true</required> <not-value> <range low="-20" high="-10" /> </not-value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest21</value> </component> <component id="RangeTestAttribute" type="attribute"> <required>true</required> <value> <range low="-50" high="200" /> </value> <not-value> <range low="-20" high="-10" /> </not-value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest22</value> </component> <component id="RangeTestAttribute" type="attribute"> <required>true</required> <value> <range low="20" high="30" /> </value> <not-value> <range low="0" high="50" /> </not-value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest23</value> </component> <component id="RangeTestAttribute" type="attribute"> <required>true</required> <value> <range low="0" high="30" /> </value> <not-value> <range low="20" high="50" /> </not-value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest24</value> </component> <component id="RangeTestAttribute" type="attribute"> <required>true</required> <value> <range low="0" high="10" /> </value> <value> <range low="20" high="30" /> </value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest30</value> </component> <component id="RangeTestAttribute" type="attribute"> <required>true</required> <value> <range low="12" high="50" /> <range low="25" high="100" /> </value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest31</value> </component> <component id="RangeTestAttribute" type="attribute"> <required>true</required> <value> <range low="12" high="50" /> </value> <value> <range low="25" high="100" /> </value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest32</value> </component> <component id="NO_SUCH_ATTRIBUTE" type="attribute"> <value> <range low="12" high="50" /> </value> <value> <range low="25" high="100" /> </value> <required>false</required> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>RangeAttrTest33</value> </component> <component id="NO_SUCH_ATTRIBUTE" type="attribute"> <required>true</required> <value> <range low="12" high="50" /> </value> <value> <range low="25" high="100" /> </value> </component> </cache-id> <dependency-id> test <component id="test" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> test <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <!-- ############################################################ --> <skip-cache-attribute>prettypleaseskipcaching</skip-cache-attribute> <cache-entry> <class>servlet</class> <name>/SkipCache1.jsp</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test01</value> </component> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/SkipCache2.jsp</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test02</value> </component> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/SkipCacheChild1.jsp</name> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/SkipCacheChild2.jsp</name> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <!-- ############################################################ --> <cache-entry> <class>servlet</class> <name>/CacheCookie1.jsp</name> <cache-id> <component id="test" type="parameter"> <value>test01</value> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> <dependency-id> test <component id="test" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> test <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/CacheCookie2.jsp</name> <property name="store-cookies"> true <exclude>cookie1</exclude> </property> <cache-id> <component id="test" type="parameter"> <value>test02</value> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> <dependency-id> test <component id="test" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> test <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/CacheCookie3.jsp</name> <property name="store-cookies"> false <exclude>cookie1</exclude> </property> <cache-id> <component id="test" type="parameter"> <value>test03</value> <required>true</required> </component> <timeout>35</timeout> <priority>1</priority> </cache-id> <dependency-id> test <component id="test" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation> test <component id="inv" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry> <cache-entry> <class>servlet</class> <name>/DoNotCacheParent.jsp</name> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test01</value> <value>test02</value> </component> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/DoNotCacheChild.jsp</name> <cache-id> <component id="test" type="parameter"> <value>test01</value> <required>true</required> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <value>test02</value> <required>true</required> </component> <property name="do-not-cache">true</property> </cache-id> </cache-entry> <!-- ############################################################ --> <cache-entry> <class>servlet</class> <name>/ConsumeSubfragmentsExcludeParent.jsp</name> <!-- Note: since the child jsps don't have their own cache-entry's, they should never be cached themselves, only as part of the parent result depending on this config --> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test01</value> </component> <property name="consume-subfragments"> true <exclude>/ConsumeSubfragmentsExcludeChild1.jsp</exclude> </property> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test02</value> </component> </cache-id> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test03</value> </component> <property name="consume-subfragments">true</property> </cache-id> </cache-entry> <!-- ############################################################ --> <cache-entry> <class>servlet</class> <name>/static.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>static</class> <name>/static.html</name> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>static</class> <name> com.ibm.ws.webcontainer.servlet.SimpleFileServlet.class </name> <cache-id> <component id="" type="pathinfo"> <required>true</required> </component> <component id="useSFServlet" type="parameter"> <required>true</required> <value>true</value> </component> <timeout>300</timeout> </cache-id> </cache-entry> <cache-entry> <class>static</class> <name>/static2.html</name> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/MultiIncludeParamRemoteServlet</name> <property name="consume-subfragments">false</property> <cache-id> <timeout>0</timeout> <component id="test" type="parameter"> <required>true</required> <value>MultiIncludeParamRemoteServlet</value> </component> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/MultiIncludeParamRemoteServlet</name> <property name="consume-subfragments">false</property> <cache-id> <timeout>0</timeout> <component id="test" type="parameter"> <required>true</required> <value>MultiIncludeParamServlet</value> </component> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/RemoteServlet</name> <property name="consume-subfragments">false</property> <property name="do-not-consume">true</property> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/RemoteServlet2</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>0</timeout> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/NonBlockingFragmentResponseServlet</name> <property name="consume-subfragments">true</property> <cache-id> <timeout>0</timeout> <component id="test" type="parameter"> <required>true</required> <value>NonBlockingFragmentResponseServlet</value> </component> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/BlockingFragmentResponseServlet</name> <property name="consume-subfragments">false</property> <cache-id> <timeout>0</timeout> <component id="test" type="parameter"> <required>true</required> <value>BlockingFragmentResponseServlet</value> </component> </cache-id> </cache-entry> <cache-entry> <class>servlet</class> <name>/JSTLIKEA.jsp</name> <property name="consume-subfragments">true</property> <cache-id> <component id="test" type="parameter"> <required>true</required> <value>test1</value> </component> </cache-id> </cache-entry> </cache>