![](/img/trans.png)
[英]Stream flushing in servlet - does it improve tomcat server side performance?
[英]Flushing output stream is ignored in a Servlet under Tomcat via AJP
假设我有一个Java Servlet,它需要一段时间才能完成对其响应的计算,但是我希望客户端看到中间响应,而不是等待它完成。 例如,假设我有以下doGet代码:
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
resp.setContentType("text/html");
PrintWriter out = new PrintWriter(resp.getOutputStream());
out.println("<h1>The Title</h1>");
out.flush();
// ... some computation that takes a while
// ... now print the result via out
out.close();
}
当我在本地运行Tomcat并访问Servlet时,可以在整个计算完成之前看到<h1>
。
但是,当我在服务器上运行它并通过Apache访问它时,只有在整个请求完成后才能得到响应(换句话说,我得到的是空白屏幕,而不是我希望收到的<h1>
)。
我怀疑问题出在AJP或Apache中,似乎在忽略对flush()
的调用,但我似乎找不到问题所在。
在服务器上,我使用的是Tomcat 6,Apache 2.2.21和AJP 1.3
原来,我所需要的只是为Tomcat构建基于APR的本机库。 根据此处的说明正确构建和安装它之后,它可以与AJP正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.