今天想設置Tomcat連接超時時間,發現配置文件選項裏沒有這個參數,決定自己寫一個,直接上代碼吧。Spring Boot版本2.0.5
package cn.ployer.watch.common.tomcat;
import java.nio.charset.Charset;
import org.apache.catalina.connector.Connector;
import org.apache.coyote.http11.Http11NioProtocol;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.context.annotation.Bean;
@SpringBootConfiguration
public class WebServerConfiguration {
@Bean
public ConfigurableServletWebServerFactory webServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.setPort(11359);//端口號
factory.setUriEncoding(Charset.forName("utf-8"));//編碼
factory.addConnectorCustomizers(new MyTomcatConnectorCustomizer());
return factory;
}
class MyTomcatConnectorCustomizer implements TomcatConnectorCustomizer {
@Override
public void customize(Connector connector) {
// TODO Auto-generated method stub
Http11NioProtocol handler = (Http11NioProtocol)connector.getProtocolHandler();
handler.setAcceptCount(2000);//排隊數
handler.setMaxConnections(5000);//最大連接數
handler.setMaxThreads(2000);//線程池的最大線程數
handler.setMinSpareThreads(100);//最小線程數
handler.setConnectionTimeout(30000);//超時時間
}
}
}