我正在我的应用程序中运行嵌入式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);”测试了它。但它不起作用。
答案 0 :(得分:1)
查看SelectChannelConnector(Jetty)的API:
我试图找到频道的任何超时功能(控制传入连接):setMaxIdleTime(),setLowResourceMaxIdleTime()和setSoLingerTime()可用。
注意:超时功能不起作用的原因与操作系统上套接字的性质有关。甚至可能是Jetty的本质(我已经在某处读过它,但不记得它在哪里)。
注意2:我不确定为什么要尝试限制超时,也许更好的方法是限制缓冲区大小?如果你想阻止拒绝服务......