Application.propertiesファイルでconnectionTimeoutなどのプロパティを設定しますか、それとも別の場所に設定しますか? Googleからこれを理解することはできません。
これを見つけました Spring-Bootの例 ですが、connectionTimeoutプロパティが含まれておらず、server.Tomcat.connectionTimeout=60000
application.propertiesファイルでエラーが発生します。
Spring Boot 1.4では、プロパティ_server.connection-timeout
_を使用できます。 Spring Bootの 一般的なアプリケーションプロパティ を参照してください。
カスタマイズされた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構成リファレンス のconnectionTimeout
を参照)。
サーバーを起動する前にシステムプロパティのセットを選択します。
/**
* Start SpringBoot server
*/
@SpringBootApplication(scanBasePackages= {"com.your.conf.package"})
//@ComponentScan(basePackages = "com.your.conf.package")
public class Application {
public static void main(String[] args) throws Exception {
System.setProperty("server.port","8132"));
System.setProperty("server.Tomcat.max-threads","200");
System.setProperty("server.connection-timeout","60000");
ApplicationContext ctx = SpringApplication.run(Application.class, args);
}
}
スプリングブート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(
"####################################################################################");
});
}
}
実際にはserver.connection-timeout
あなたのapplication.properties
。 参照 、ブックマークすることをお勧めします。