次のように、アプリケーション内で組み込みの jetty サーバー (jetty 6.1.24) を実行しています。
Handler handler=new AbstractHandler()
{
@Override
public void handle(String target, HttpServletRequest request,
HttpServletResponse response, int dispatch)
throws IOException, ServletException {
//this can take a long time
doSomething();
}
};
Server server = new Server(8080);
Connector connector = new org.mortbay.jetty.nio.SelectChannelConnector();
server.addConnector(connector);
server.setHandler(handler);
server.start();
タイムアウト値 (2 秒) を設定して、handler.handle() メソッドが 2 秒以上かかる場合、jetty サーバーがタイムアウトし、408 http コード (要求タイムアウト) でクライアントに応答するようにします。
これは、アプリケーションがクライアント リクエストを長時間保持せず、常に 2 秒以内に応答することを保証するためです。
私はいくつかの調査を行い、「connector.setMaxIdleTime(2000);」でテストしました。しかし、うまくいきません。