I found the cause of the problem. Tomcat's implementation of javax.servlet.http.HttpServlet implements the doGet method like this:
protected void doHead(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { NoBodyResponse response = new NoBodyResponse(resp); doGet(req, response); response.setContentLength(); } The problem occurs when a HTTP HEAD request arrives for a page that isn't in the page cache. When a HTTP HEAD request is received for a page that is not in the cache, the caching filter prepares a response wrapper that will capture the request (content generated by the application's servlets), puts that wrapper in the place of the real response, for the filters and servlets next in the chain, and gives the execution to the next filter/servlet in chain.. But, for HTTP HEAD requests, the caching wrapper never gets to the servlets that generate content, because the above method wraps it in NoBodyResponse, a response wrapper that throws away everything that is writen to it, like /dev/null does... servlets write content to NoBodyResponse, and the content is lost. On the way back, the caching filter inspects the response wrapper it created, sees 200 response code, and decides that the page was generated well, and caches it... (the content doesn't get cached because NoBodyResponse didnt forward it to the response it wrapped - caching filter's response wrapper) I will fix my caching filter to watch for this special case, and that will solve the problem in our applications... but I wonder if it is okay that Tomcat (silently) wraps the response inside a wrapper like NoBodyResponse that eats content.. or was it my fault that I didn't explicitly make difference between GET and HEAD requests when thinking about caching, probably because of lack of expirience.. -- Why? Because YES! --------------------------------------------------------------------- To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]