繁体   English   中英

通过AJP在Tomcat下的Servlet中忽略刷新输出流

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM