I am including one jsp in another jsp, there are different behaviors for 2 tomcat versions as below
1. case in 7.0.37 - setCommitted(true) was called and thus in tiles code (pasted below), it includes the jsp and works fine public class TilesRequestProcessor extends RequestProcessor protected void doForward( String uri, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { if (response.isCommitted()) { this.doInclude(uri, request, response); } else { super.doForward(uri, request, response); } } 2. case in 7.0.39 - setCommitted() was not being called and thus isCommitted - default is false, and in this case it tries to forward and thus call super.doForward(uri, request, response) as per above code. Now as response is already committed but due to this flag value being false, it tries to flush again giving issue of flushing of already flushed response. and thus giving IOException: Stream closed issue. so the problem is, if response is already committed why org.apache.coyote.Response.isCommitted not being set to true ? Thanks Prashant Kadam -- ~ Prashant Kadam