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

Java 通过AJP在Tomcat下的Servlet中忽略刷新输出流,java,apache,servlets,mod-jk,ajp,Java,Apache,Servlets,Mod Jk,Ajp,假设我有一个JavaServlet,它需要一段时间来计算它的响应,但我希望客户端看到中间响应,而不是等待它完成。例如,假设我有以下doGet代码: protectedvoid doGet(HttpServletRequest-req,HttpServletResponse-resp)抛出ServletException,IOException { 分别为setContentType(“文本/html”); PrintWriter out=新的PrintWriter(分别为getOutputStr

假设我有一个JavaServlet,它需要一段时间来计算它的响应,但我希望客户端看到中间响应,而不是等待它完成。例如,假设我有以下doGet代码:

protectedvoid doGet(HttpServletRequest-req,HttpServletResponse-resp)抛出ServletException,IOException
{
分别为setContentType(“文本/html”);
PrintWriter out=新的PrintWriter(分别为getOutputStream());
out.println(“标题”);
out.flush();
//…一些需要一段时间的计算
//…现在通过输出打印结果
out.close();
}
当我在本地运行Tomcat并访问Servlet时,我可以在整个计算完成之前看到

但是,当我在服务器上运行它,并通过Apache访问它时,我只有在整个请求完成后才能得到响应(换句话说,我得到的是一个空白屏幕,而不是我期望收到的

我怀疑问题出在AJP或Apache中的某个地方,似乎它忽略了对
flush()
的调用,但我似乎找不到问题所在


在我使用Tomcat 6的服务器上,Apache 2.2.21和AJP 1.3证明了我所需要的只是为Tomcat构建基于APR的本机库。在根据说明正确构建和安装它之后,它与AJP配合得很好。

结果证明,我所需要的只是为Tomcat构建基于APR的本机库。在根据说明正确构建和安装它之后,AJP工作正常。

您是否尝试在没有apache的情况下在服务器上运行它,看看是哪种产品造成的?Tomcat不是主要的怀疑,因为它在我的开发机器上“工作”,但确实最好先消除它。不幸的是,我无法在该服务器上直接访问tomcat。后来我在没有Apache的服务器上测试了它,它成功了——这意味着对flush()的调用没有被忽略。您是否尝试在没有Apache的服务器上运行它,看看是哪种产品造成的?tomcat不是主要的嫌疑犯,因为它在我的开发机器上“起作用”,但确实,最好先消除它。不幸的是,我无法在该服务器上直接访问tomcat。我后来在没有Apache的服务器上对其进行了测试,结果成功了——这意味着对flush()的调用没有被忽略。此错误似乎与此相关:。应该在Tomcat 7中修复此错误。此错误似乎与:。它应该在Tomcat 7中修复。