两种定制tomcat 的方法
1.实现EmbeddedServletContainerCustomizer接口,并将实现类纳入spring容器中管理
2.new 一个TomcatEmbeddedServletContainerFactory,并将类纳入spring容器中管理
一般tomcat优化会优化这2个参数
http11NioProtocol.setPollerThreadCount(2000);
http11NioProtocol.setMaxThreads(500);
例子实现代码:
@Component
public class MyEmbeddedServletContainerCustomizer implements EmbeddedServletContainerCustomizer {
@Override
public void customize(ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer) {
TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory = (TomcatEmbeddedServletContainerFactory)configurableEmbeddedServletContainer;
tomcatEmbeddedServletContainerFactory.setPort(8008);
tomcatEmbeddedServletContainerFactory.addContextValves(getAccessLogValve());
tomcatEmbeddedServletContainerFactory.addConnectorCustomizers(new MyTomcatConnectorCustomizer());
}
private AccessLogValve getAccessLogValve(){
AccessLogValve log = new AccessLogValve();
log.setEnabled(true);
log.setPattern("%h %l %u %t \"%r\" %s %b");
log.setDirectory("e:/temp/logs");
log.setPrefix("springboot-access-log");
log.setSuffix(".txt");
return log;
}
}
class MyTomcatConnectorCustomizer implements TomcatConnectorCustomizer{
@Override
public void customize(Connector connector) {
System.out.println(connector.getProtocolHandler().getClass());
Http11NioProtocol http11NioProtocol = (Http11NioProtocol)connector.getProtocolHandler();
System.out.println(http11NioProtocol.getPollerThreadCount());
System.out.println(http11NioProtocol.getMaxThreads());
http11NioProtocol.setPollerThreadCount(2);
http11NioProtocol.setMaxThreads(500);
}
}
本文介绍通过实现EmbeddedServletContainerCustomizer接口或使用TomcatEmbeddedServletContainerFactory来定制Spring Boot应用中的Tomcat服务器。主要涉及如何调整核心配置参数如设置端口、启用访问日志记录及优化线程池配置。
1514

被折叠的 条评论
为什么被折叠?



