You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置嵌入式Jetty的Idle Timeout(请求超时)以解决超时异常

嵌入式Jetty Idle Timeout(请求超时)配置方法

你遇到的异常是Jetty默认30秒空闲超时触发的,以下是几种修改该超时时间的配置方式:

触发异常信息:

java.util.concurrent.TimeoutException: Idle timeout expired: 30002/30000 ms
    at org.eclipse.jetty.io.IdleTimeout.checkIdleTimeout(IdleTimeout.java:167)
    at org.eclipse.jetty.io.IdleTimeout.idleCheck(IdleTimeout.java:113)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:577)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1589)

1. 全局Connector层面配置(推荐)

修改Connector的空闲超时参数,对所有通过该Connector处理的请求生效:

// 初始化Jetty Server
Server server = new Server();

// 配置HTTP参数,设置空闲超时为60秒(单位:毫秒)
HttpConfiguration httpConfig = new HttpConfiguration();
httpConfig.setIdleTimeout(60000);

// 创建HTTP连接工厂并关联配置
HttpConnectionFactory httpConnFactory = new HttpConnectionFactory(httpConfig);

// 创建ServerConnector并绑定端口
ServerConnector connector = new ServerConnector(server, httpConnFactory);
connector.setPort(8080);

// 将Connector添加到Server实例
server.addConnector(connector);

// 后续添加Servlet、Handler等业务配置...

2. 特定Servlet/Handler单独配置

如果仅需给某个Servlet或Handler设置自定义超时,可通过上下文属性配置:

ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");

// 给当前上下文设置60秒空闲超时
context.getServletContext().setAttribute("org.eclipse.jetty.server.HttpConnection.idleTimeout", 60000);

// 添加自定义Servlet
context.addServlet(new ServletHolder(new MyCustomServlet()), "/api/*");
server.setHandler(context);

3. XML配置方式(若用XML初始化嵌入式Jetty)

通过XML配置文件修改Connector的空闲超时:

<Configure id="Server" class="org.eclipse.jetty.server.Server">
  <Call name="addConnector">
    <Arg>
      <New class="org.eclipse.jetty.server.ServerConnector">
        <Arg name="server"><Ref refid="Server"/></Arg>
        <Arg>
          <Array type="org.eclipse.jetty.server.ConnectionFactory">
            <Item>
              <New class="org.eclipse.jetty.server.HttpConnectionFactory">
                <Arg>
                  <New class="org.eclipse.jetty.server.HttpConfiguration">
                    <!-- 设置空闲超时为60秒 -->
                    <Set name="idleTimeout">60000</Set>
                  </New>
                </Arg>
              </New>
            </Item>
          </Array>
        </Arg>
        <Set name="port">8080</Set>
      </New>
    </Arg>
  </Call>
</Configure>

内容的提问来源于stack exchange,提问作者apflieger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 04:25:04