我想尝试设置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/