ストリーミングしていきます。.jsp ファイルがあり、.jsp ファイルの最後に、次のコードを使用して非同期サーブレットを含めます。
<jsp:include page = '/simple' flush = 'true' />
したがって、ページ全体がロードされたときに、非同期応答を処理する無限の非同期要求を開く必要があります。
ここに私のサーブレットコードがあります:
public class SimpleAsyncServlet extends HttpServlet {
public static AsyncContext ctx;
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
req.setAttribute("org.apache.catalina.ASYNC_SUPPORTED", true);
ctx = req.startAsync();
ctx.setTimeout(0);
}
}
他の Java クラスから、静的な SimpleAsyncServlet.ctx.getResponse.getWriter() を使用して、JavaScript コードを現在のページに印刷しています。問題なく動作していますが、ブラウザはロード中であることを示し続けます。非同期のアイデアによると、ページをロードする必要があり、この非同期リクエストはバックグラウンドで存続する必要があります..それだけですが、ブラウザはページを永遠にロードし続けます(タイムアウトは0です。リクエストを無限に開きたいので)
どこが間違っているのか、このブラウザをロードせずにこの永続的なリクエストを行うにはどうすればよいですか?
PS URL (localhost.../simple) からサーブレットに直接アクセスしようとしましたが、ページに何も表示されません。それは永遠にロードし続けます。