import org.apache.catalina.LifecycleListener;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.core.AprLifecycleListener;
import org.apache.coyote.http11.Http11AprProtocol;
import org.apache.coyote.http11.Http11NioProtocol;
import org.springframework.beans.factory.annotation.Value;
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;
import org.springframework.context.annotation.Configuration;
/**
* @Auther: xxxx
* @Date: 2018/8/23 11:28
* @Description: tomcat 参数配置.
*/
@Configuration
public class TomcatConfig {
@Value("${tomcat.apr:false}")
private boolean enabled;
@Bean
public ConfigurableServletWebServerFactory webServerFactory()
{
TomcatServletWebServerFactory tomcatFactory = new TomcatServletWebServerFactory();
tomcatFactory.addConnectorCustomizers(new MyTomcatConnectorCustomizer());
if (enabled) {
LifecycleListener aprLifecycle = new AprLifecycleListener();
tomcatFactory.setProtocol("org.apache.coyote.http11.Http11AprProtocol");
tomcatFactory.addContextLifecycleListeners(aprLifecycle);
}
return tomcatFactory;
}
class MyTomcatConnectorCustomizer implements TomcatConnectorCustomizer
{
public void customize(Connector connector)
{
if(enabled) {
Http11AprProtocol protocol = (Http11AprProtocol) connector.getProtocolHandler();
//设置最大连接数
protocol.setMaxConnections(5000);
//设置最大线程数
protocol.setMaxThreads(2000);
protocol.setConnectionTimeout(30000);
}else {
Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
//设置最大连接数
protocol.setMaxConnections(5000);
//设置最大线程数
protocol.setMaxThreads(2000);
protocol.setConnectionTimeout(30000);
}
}
}
}
网友评论