java - Spring Boot中设置tomcat连接上传超时

标签 java spring-boot tomcat

我想尝试设置Tomcat connectionUploadTimeout Spring Boot 2 中的属性。我在服务器日志中收到一些随机的不可重现的 java.net.SocketTimeoutException: null

它来自请求输入流,因此如果我可以将此属性设置为非常短的持续时间,那么我应该能够在本地复制它。

我已经尝试过

server.disableUploadTimeout=false
server.connectionUploadTimeout=5000

server.tomcat.disableUploadTimeout=false
server.tomcat.connectionUploadTimeout=5000

server.tomcat.disable-upload-timeout=false
server.tomcat.connection-upload-timeout=5000

但我的 15 秒请求仍然在本地完成,没有任何超时。

Spring docs在这里不是很有帮助。

最佳答案

无需猜测支持哪些属性,因为它们都列在 an appendix in the reference documentation 中。正如您所看到的,没有用于配置连接上传超时或在 Connector 上启用上传超时的属性。这意味着必须以编程方式配置这些属性。

您可以使用 Tomcat 特定的 WebServerFactoryCustomizer 以编程方式配置 Connector:

@Bean
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> tomcatCustomizer() {
    return (tomcat) -> tomcat.addConnectorCustomizers((connector) -> {
        if (connector.getProtocolHandler() instanceof AbstractHttp11Protocol) {
            AbstractHttp11Protocol<?> protocolHandler = (AbstractHttp11Protocol<?>) connector
                    .getProtocolHandler();
            protocolHandler.setDisableUploadTimeout(false);
            protocolHandler.setConnectionUploadTimeout(5000);
        }
    });
}

关于java - Spring Boot中设置tomcat连接上传超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53307096/

相关文章:

java - 什么在 Windows 上将命令行参数解析为 args[]?

java - 我想从数据库中填充数据并使用 Angular 前端和 Spring 引导后端将其放入下拉列表中

java - 在 tomcat7 的类路径上未检测到 Spring WebApplicationInitializer 类型

java - 评估复选框 boolean 值

java - 关于Spring bean初始化和销毁​​的一些疑惑

java - 冒泡排序没有排序

mysql - JpaRepository保存值总是返回null

elasticsearch - 如何在 spring boot 应用程序中显示 elasticsearch 查询

tomcat - 复制任务中的问题

tomcat - Nginx 到 tomcat SSL 连接 |没有共同的密码套件