jetty - 如何设置 jetty 服务器的连接/请求超时?

标签 jetty embedded-jetty connection-timeout

我在我的应用程序中运行嵌入式 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);”进行了测试。但它不起作用。

最佳答案

看一下 SelectChannelConnector (Jetty) 的 API:

http://download.eclipse.org/jetty/7.6.17.v20150415/apidocs/org/eclipse/jetty/server/nio/SelectChannelConnector.html

我试图找到 channel 的任何超时功能(控制传入连接): setMaxIdleTime()、setLowResourceMaxIdleTime() 和 setSoLingerTime() 可用它出现。

注意:超时功能不起作用的原因与操作系统上套接字的性质有关。甚至可能是 Jetty 的性质(我在某处读到过它,但不记得它在哪里)。

NOTE2:我不知道你为什么要限制超时,也许更好的方法是限制缓冲区大小?如果您想防止拒绝服务...

关于jetty - 如何设置 jetty 服务器的连接/请求超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5445006/

相关文章:

java - 如何在 Dropwizard 中使用 Jetty Continuations?

java - 具有长键的映射在 Serialized 类中不起作用

asynchronous - 如何使用异步 servlet 修改代理响应?

java - 嵌入式 Jetty 服务器不适用于 Java Vaadin 应用程序

java - 创建重试模板以在连接超时和读取超时时重试

android - 如何处理异步任务中的连接超时

java - 禁用从 Maven 运行的 Jetty 日志记录

java - 爆发 war 中的嵌入式jetty服务器

websocket - 在 Embedded Jetty 9 上的带注释的 @WebSocket 类中访问 HttpSession

php - 调试504网关超时及实际原因及解决方法