Hi Tomcat Team, I have servlet filter for all requests to cache the entire PUT/POST Payload. When content is large 4KB or more, I am getting partial content when I read from HttpServletRequest.getInputStream(). But I but 10 seconds wait before consuming the input stream, I am getting entire content. Can you please let me know what is the correct way to wait for the entire content is ready to consume from the tomcat servlet request input stream?
Filter Code: If I put Thread.sleep(100000) at begin of filter, I am getting full content. @Override protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException { CachedBodyHttpServletRequest cachedBodyHttpServletRequest = new CachedBodyHttpServletRequest(httpServletRequest); filterChain.doFilter(cachedBodyHttpServletRequest, httpServletResponse); } // Wrapper to cache content. public CachedBodyHttpServletRequest(HttpServletRequest request) throws IOException { super(request); ServletInputStream inputStream = request.getInputStream(); final int len = request.getContentLength(); if (len >= 0) { cachedBody = new byte[len]; ByteStreams.readFully(inputStream, cachedBody); } else { cachedBody = ByteStreams.toByteArray(inputStream); } } Thanks, Bhavesh