代码之家  ›  专栏  ›  技术社区  ›  Adam

在Spring引导中设置tomcat ConnectionPloadTimeout

  •  0
  • Adam  · 技术社区  · 6 年前

    我想试着把雄猫放好 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秒本地请求仍在完成,没有任何超时。

    这个 Spring docs 在这里没有什么帮助。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Andy Wilkinson    6 年前

    无需猜测支持哪些属性,因为它们都列在 an appendix in the reference documentation . 正如您所希望看到的,没有用于配置连接上载超时或在服务器上启用上载超时的属性 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);
            }
        });
    }