java - 在 Spring Boot 中设置 tomcat connectionUploadTimeout
问题描述
我想尝试在 Spring Boot 2 中设置 Tomcat connectionUploadTimeoutjava.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 文档在这里不是很有帮助。
解决方案
无需猜测支持哪些属性,因为它们都列在参考文档的附录中。如您所见,没有用于配置连接上传超时或启用上传超时的属性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);
}
});
}
推荐阅读
- c - 使用宏的 C 枚举
- c++ - 需要在 C++ 程序中询问汽车制造商
- react-native - useEffect 无法在 react native 中运行
- c# - ConcurrentDictionary 可以安全使用吗?
- rust - Tokio 错误:即使安装了 #[tokio::main] 和单个版本的 tokio,“没有反应器正在运行”
- xampp - 如何重定向xampp apache日志按钮
- sql - SQL Server 中执行查询的日志
- docker - 无法在 Dockerfile 中使用 EXPOSE 公开端口
- php - PHP 函数 create_function() 已弃用,代码不能在最新的 PHP 中运行?
- sql - 给定日期范围的星期六计数