I think you need to be aware of how the request, httpsession and response objects work in tapestry. Ultimately they are proxies that lookup values from RequestGlobals.
1. RequestGlobals.storeServletRequestResponse(…) is called 2. The HttpServletRequestFilters run 3. RequestGlobals.storeServletRequestResponse(…) is called again 4. RequestGlobals.storeRequestResponse(…) is called 5. The RequestFilters are run 6. RequestGlobals.storeRequestResponse(…) is called again Since you are using a HttpServletRequestFilter and not a RequestFilter, the Request and Response are not set yet. You should use the HttpServletRequest instead of Request.