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

如何在Jetty 12中通过编程方式设置最大请求大小?

Jetty 12 增大请求大小的编程式配置方案

Jetty 12对请求大小限制的配置逻辑和旧版本差异较大,你之前的方法无效是因为配置对象和属性已变更,以下是针对Jetty 12.0.10 + Java 21的有效配置方式:

1. 核心请求内容大小限制

首先需要设置整个HTTP请求的最大内容大小(包含请求体),通过HttpConfiguration的setMaxRequestContentSize方法实现,这是全局生效的基础配置:

HttpConfiguration httpConfig = new HttpConfiguration();
// 设置最大请求内容大小为100MB
httpConfig.setMaxRequestContentSize(100 * 1024 * 1024);

注意:你之前调用的setRequestHeaderSize仅控制请求头的大小,和请求体无关,所以无法解决断开连接的问题。

2. 表单提交内容限制(application/x-www-form-urlencoded)

如果你的场景包含表单提交,Jetty默认对表单内容有1MB左右的单独限制,需要通过FormConfig单独配置:

// 创建表单配置对象并设置大小限制
FormConfig formConfig = new FormConfig();
formConfig.setMaxFormContentSize(100 * 1024 * 1024); // 100MB
// 可选:设置表单允许的最大键值对数量,默认1000,按需调整
formConfig.setMaxFormKeys(10000);

// 将配置绑定到Servlet上下文
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setAttribute(FormConfig.class.getName(), formConfig);

旧版本的org.eclipse.jetty.server.Request.maxFormContentSize属性在Jetty 12中已被废弃,不再生效。

3. 文件上传内容限制(multipart/form-data)

如果涉及文件上传(multipart类型请求),还需要额外配置MultipartConfigElement:

// 配置文件上传参数:临时目录、单个文件大小、总文件大小、内存缓存阈值
MultipartConfigElement multipartConfig = new MultipartConfigElement(
    null, // 使用系统默认临时目录
    100 * 1024 * 1024, // 单个文件最大100MB
    100 * 1024 * 1024, // 请求中所有文件总大小100MB
    0 // 超过0字节就写入临时文件,可按需调整
);

// 全局配置文件上传规则
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setInitParameter("org.eclipse.jetty.multipartConfig", multipartConfig.toString());

根据你的实际请求类型,选择对应的配置组合即可解决请求过大导致的断开问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:03:17