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

Ada*_*dam 2 java tomcat spring-boot

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

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

我试过了

server.disableUploadTimeout=false
server.connectionUploadTimeout=5000
Run Code Online (Sandbox Code Playgroud)

server.tomcat.disableUploadTimeout=false
server.tomcat.connectionUploadTimeout=5000
Run Code Online (Sandbox Code Playgroud)

server.tomcat.disable-upload-timeout=false
server.tomcat.connection-upload-timeout=5000
Run Code Online (Sandbox Code Playgroud)

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

Spring 文档在这里不是很有帮助。

And*_*son 5

无需猜测支持哪些属性,因为它们都列在参考文档的附录中。正如您希望看到的,没有用于配置连接上传超时或在Connector. 这意味着必须以编程方式配置这些属性。

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

@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);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)