DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3941>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3941 PrinWriter.flush() HttpServletResponse.flushBuffer() do not work Summary: PrinWriter.flush() HttpServletResponse.flushBuffer() do not work Product: Tomcat 4 Version: 4.0 Release Candidate 2 Platform: PC OS/Version: Linux Status: NEW Severity: Normal Priority: Other Component: Unknown AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] Flushing of buffered output from a servlet to a client does not work as shown in the following Servlet code and Clinet code. This problem only occured in Tomcat 4 where the output only occures after closing the PrintWriter. The flushing works fine with Tomcat 3.2.3 for both the Prinwriter and the HttpServletResponse. HERE IS THE SERVLET TEST CODE: import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public final class Server extends HttpServlet { /** * Respond to a GET request for the content produced by * this servlet. * * @param request The servlet request we are processing * @param response The servlet response we are producing * * @exception IOException if an input/output error occurs * @exception ServletException if a servlet error occurs */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/xml"); PrintWriter writer = response.getWriter(); writer.println("buffersize:" + response.getBufferSize()); writer.println("\nTest:"); writer.println("initial isCommited:" + response.isCommitted()); writer.println("\nresponse"); writer.flush(); writer.println("after writer.flush() isCommited:" + response.isCommitted()); writer.println("\nParameters"); response.flushBuffer(); writer.println("after response.flushBuffer() isCommited:" + response.isCommitted()); Enumeration names = request.getParameterNames(); while (names.hasMoreElements()) { String name = (String) names.nextElement(); writer.println(name + ": " + request.getParameter(name)); writer.println("Waiting 2secs\n"); //THESE ARE THE 2 PROBLEMATIC LINES -NONE OF THEM WORKS WITH TOMCAT 4 writer.flush(); response.flushBuffer(); try { Thread.sleep(2000); } catch (InterruptedException e){ } } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { doGet(request, response); } } AND HERE IS THE CLIENT CODE: import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.io.PrintWriter; import java.net.URL; import java.net.URLDecoder; import java.net.URLEncoder; import java.net.URLConnection; public class Client { public static void main(String[] args) { String query = "http://localhost:8080/Server1/Server1?banana=yellow&snow=white&sea=blue"; try { URL url = new URL(query); BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); String line; while ((line = in.readLine()) != null) System.out.println(line); } catch(IOException e) { System.out.println("Error " + e); } } }