我是否在application.properties文件中配置了connectionTimeout之类的属性,还是在其他地方配置?我无法从谷歌那里得知这一点。
我找到了这个Spring-Boot example,但它不包含connectionTimeout属性,当我在application.properties文件中设置server.tomcat.connectionTimeout=60000
时,我收到错误。
答案 0 :(得分:25)
从Spring Boot 1.4开始,您可以使用属性server.connection-timeout
。请参阅Spring Boot的common application properties。
提供自定义的EmbeddedServletContainerFactory
bean:
@Bean
public EmbeddedServletContainerFactory servletContainerFactory() {
TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
factory.addConnectorCustomizers(connector ->
((AbstractProtocol) connector.getProtocolHandler()).setConnectionTimeout(10000));
// configure some more properties
return factory;
}
如果您不使用Java 8或者不想使用Lambda Expressions,请添加TomcatConnectorCustomizer
,如下所示:
factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
@Override
public void customize(Connector connector) {
((AbstractProtocol) connector.getProtocolHandler()).setConnectionTimeout(10000);
}
});
setConnectionTimeout()
方法需要超时(以毫秒为单位)(请参阅Apache Tomcat 8 Configuration Reference中的connectionTimeout
)。
答案 1 :(得分:3)
我更喜欢在服务器启动之前设置一组系统属性:
print
答案 2 :(得分:1)
在Spring Boot 2.x及更高版本中, 嵌入tomcat的实现方法已更改。
请参阅下面的代码。
import org.apache.coyote.http11.AbstractHttp11Protocol;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Configuration;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Configuration
public class TomcatCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
@Autowired
private ContainerProperties containerProperties;
@Override
public void customize(TomcatServletWebServerFactory factory) {
factory.addConnectorCustomizers(connector -> {
AbstractHttp11Protocol protocol = (AbstractHttp11Protocol) connector.getProtocolHandler();
protocol.setMaxKeepAliveRequests(10);
log.info("####################################################################################");
log.info("#");
log.info("# TomcatCustomizer");
log.info("#");
log.info("# custom maxKeepAliveRequests {}", protocol.getMaxKeepAliveRequests());
log.info("# origin keepalive timeout: {} ms", protocol.getKeepAliveTimeout());
log.info("# keepalive timeout: {} ms", protocol.getKeepAliveTimeout());
log.info("# connection timeout: {} ms", protocol.getConnectionTimeout());
log.info("# max connections: {}", protocol.getMaxConnections());
log.info("#");
log.info(
"####################################################################################");
});
}
}
答案 3 :(得分:0)
application.properties
中实际上应该是{{1}}。 Reference,我建议你给它添加书签。