一尘不染

在Spring Boot中设置tomcat connectionUploadTimeout

spring-boot

我想尝试在Spring Boot 2中设置Tomcat
connectionUploadTimeout属性。我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秒请求仍在完成,没有任何超时。

春天的文档是不是非常有帮助这里。


阅读 2979

收藏
2020-05-30

共1个答案

一尘不染

无需猜测支持哪些属性,因为所有属性均在参考文档的附录中列出。正如您希望看到的那样,没有用于配置连接上载超时或用于​​在上启用上载超时的属性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);
        }
    });
}
2020-05-30