You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Apu Shah <ap...@esaya.com> on 2002/06/26 18:08:33 UTC
flush still not working.
i tried using the following code over http and it still didn't work.
any ideas would be appreciated.
tia, apu
i am using tomcat 4.0.3, apache 2.0.34 over ssl with the warp connector.
i have set the connector allowChunking to false.
the problem that i see is that after i use
getRequestDispatcher(page).include(req,resp) and flush the resp.out, the
page does not get flushed to the browser. essentially i am trying to
simulate a "please wait" page while my server does something that takes
a longish time.
am i missing something? i have explicitly flushed the buffer (using both
resp.flushBuffer() and out.flush()), set autoFlush="true", made
allowChunking="false".... anything else i can try or is this a
legitimate bug?
or does it have something to do with ssl? i haven't tried this without
ssl....
here is sample code to illustrate
======== CODE START =============
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class test extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException, ServletException {
// Set content type, et all
resp.setContentType("text/html");
// Include waitpage, flush response.
String waitPage = "/wait.jsp";
getServletContext().getRequestDispatcher(waitPage).include(req,resp);
resp.getWriter().flush();
log("Flushed " + waitPage,null);
// Sleep for a minute. The client browser should be viewing the
// wait page by now.
try {
Thread.currentThread().sleep(60*1000);
}
catch(InterruptedException ie) {
log("test",ie);
}
// Ok, we're ready to show the next page. Send a redirect.
PrintWriter out = resp.getWriter();
String uri = "http://www.cnn.com";
out.println("<meta http-equiv=\"Refresh\" content=\"0; url=" +
uri +"\">");
out.flush();
log("Sent refresh to " + uri,null);
}
// Logging, for illustrative purposes only.
public void log(String msg, Throwable t) {
StringBuffer buf = new StringBuffer();
buf.append(this.getClass().getName());
buf.append("> ");
buf.append(msg);
ServletContext ctx = this.getServletConfig().getServletContext();
if(t != null)
ctx.log(buf.toString(),t);
else
ctx.log(buf.toString());
}
}
======== CODE END =============
wait.jsp can be any jsp page, for example
<%@page language="java" autoFlush="true"%>
waiting.....
i see the logs showing me that the wait page has been flushed. :
2002-06-25 12:52:07 jsp: init
2002-06-25 12:52:14 test> Flushed wait page /wait.jsp
2002-06-25 12:52:47 test> Sent refresh to http://www.cnn.com
but the browser never renders the wait page, instead it just waits for a
minute, and refreshes to www.cnn.com. i tried with different user agents
(netscape 6.2, mozilla 1.0 on linux and ie 6 on xp) to eliminate the
browser from the picture.
tia.
apu
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>