Servlet 3.0으로 캐싱
동적 캐시는 Servlet 3.0 스펙에 대해 서블릿 캐싱 지원을 제공합니다.
Servlet 3.0에 동적 캐시를 사용하는 경우에는 다음과 같은
API 특성에 주의하십시오.
- 동적 캐시는 ServletRequest 및 ServletResponse 오브젝트를 ServletRequestWrapper 및 ServletResponseWrapper 오브젝트를 확장하는 자체 캐시 애플리케이션 랩퍼 오브젝트로 랩핑합니다.
- 동적 캐시는 항상 ServletRequest에 추가되는 첫 번째 asyncListener입니다.
- startAsync(ServletRequest req, ServletResponse res) 및 공용 AsyncContext startAsync()의 사용자는 이 메소드를 호출하기 전에 응답을 비워야 합니다. 응답을 비워서 랩핑된 캐시 응답에 기록되는 모드 데이터가 유실되지 않도록 합니다.
- 공용 void addListener(asyncListener, req, res)에 전달되는 요청 및 응답 오브젝트에서 읽거나 이에 대해 쓰지 마십시오. 지정된 AsyncListener가 등록되고 연관된 모든 자원 해제에 사용될 수도 있기 때문에 추가 랩핑이 발생할 수 있습니다.
- 동적 캐시를 사용하는 경우 do-not-consume 특성은 Servlet 3.0에 대해 지원되지 않습니다. 런타임은 강제로 상위 서블릿이 하위 단편을 사용하고 do-not-consume 특성은 무시하도록 합니다.