1

応答の計算を完了するのに時間がかかる Java サーブレットがあるとしますが、クライアントが終了するのを待つのではなく、中間応答を確認したいとします。たとえば、次の 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 をローカルで実行してサーブレットにアクセスすると、計算全体が完了する<h1> 前に が表示されます。

ただし、サーバーで実行し、Apache 経由でアクセスすると、要求全体が完了した<h1>にのみ応答が返されます (つまり、受信するはずの画面ではなく、空白の画面が表示されます)。

この問題は AJP または Apache のどこかにあるのではflush()ないかと考えています。

サーバーでは、Tomcat 6、Apache 2.2.21、および AJP 1.3 を使用しています

4

1 に答える 1

1

私が必要としていたのは、Tomcat 用の APR ベースのネイティブ ライブラリを構築することだけでした。こちらの手順に従って適切にビルドおよびインストールした後、AJP で正常に動作しました。

于 2012-06-18T06:04:21.610 に答える