Connection: close 忘れ
HTTPレスポンスのヘッダに Connection: close をつけ忘れていた。
HTTP/1.1では、クライアント/サーバどちらかがConnection: CloseをHTTPヘッダで指定しない限りHTTP応答の後ではTCPは接続されたままとなる。クライアントはひとつのTCP接続上で複数の要求を続けてすることができる。これを継続した接続(persistent connectionまたはkeep-alive)と呼ぶ。サーブレットがTCP開放をかけるときは:
HttpServletResponse.setHeader(“Connection”, “Close”);
を実行する。
参考:
- HTTPセッションとTCP接続 - http://www.cresc.co.jp/tech/java/Servlet_Tutorial/Lesson_36.htm
- 継続した接続とチャンクド応答 - http://www.cresc.co.jp/tech/java/Servlet_Tutorial/Lesson_38.htm