요청이 3 초 이상 처리되고 있으면 Tomcat이 내장 된 Spring Boot 애플리케이션에서 연결을 재설정하고 싶습니다. 그러나 내가 할 수있는 방법이 없습니다. 마지막 코드 스 니펫은 다음과 같습니다.스프링 부트 임베디드 Tomcat 연결 제한 시간을 구성하는 방법은 무엇입니까?
@SpringBootApplication
@ComponentScan(basePackages = {"."})
@Controller
public class ExternalServerApplication {
public static void main(String[] args) {
SpringApplication.run(ExternalServerApplication.class, args);
}
@Bean
public EmbeddedServletContainerFactory servletContainerFactory() {
TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
factory.addConnectorCustomizers(
connector -> {
AbstractProtocol protocol = (AbstractProtocol) connector.getProtocolHandler();
protocol.setConnectionTimeout(1);
protocol.setKeepAliveTimeout(1);
protocol.setSoTimeout(1);
protocol.setPort(8012);
protocol.setMaxThreads(10);
});
return factory;
}
@RequestMapping("/request")
@ResponseBody
public String request() throws InterruptedException {
for (int i = 0; i < 50; i++) {
Thread.sleep(100);
}
return "OK";
}
}
그러나 작동하지 않습니다.
localhost:8012/requests
에 대한 요청은 5 초 동안 지속되고 "OK"를 반환하지만 재설정해야합니다.
아이디어가 있으십니까?
application.properties에 server.connection-timeout = 3000을 지정하려고 했습니까? 편집 : 반면에, 당신은 내 의견을 server.connection - timeout 뭔가 다른 설명서에서 인용 : "이 커넥터가 요청을 연결을 수락 한 후 기다리는 밀리 초 수있는 동안 요청 시간 제한 처리에 대해 씁니다 URI 줄이 표시되어야합니다. ") – patrykos91
해당 스레드를보십시오 : http : // stackoverflow.com/questions/7145131/tomcat-request-timeout 귀하의 문제를 해결할 수있는 또 다른 옵션은 Netflix Zuul을 사용하는 것입니다 :) – patrykos91