Springboot内置tomcat优化说明
修改springboot内置tomcatEmbeddedServletContainerCustomizer接口中的抽象方法有三个内置容器public interface EmbeddedServletContainerCustomizer {/*** Customize the specified {@link ConfigurableEmbeddedServletContaine...
·
修改springboot内置tomcat
EmbeddedServletContainerCustomizer接口中的抽象方法有三个内置容器
public interface EmbeddedServletContainerCustomizer {
/**
* Customize the specified {@link ConfigurableEmbeddedServletContainer}.
* @param container the container to customize
*/
void customize(ConfigurableEmbeddedServletContainer container);
}
我们想要在application.properties中修改tomcat一些配置时,可以参考ServerPropeties类
比如,修改端口号,设置绑定地址,开启日志,设置输出位置等等。
server.port=9090
server.address=192.1.11.111
server.tomcat.accesslog.enable=true
server.tomcat.accesslog.directory=e:/temps
本文以ServerProperties内Tomcat为例简要说明:
可以通过编写类来实现TomcatEmbeddedServerContainerFactory
package com.gcxzflgl;
import java.io.File;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.valves.AccessLogValve;
import org.apache.coyote.http11.Http11NioProtocol;
import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.context.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.http.HttpStatus;
//@Component
public class MyEmbeddedServlet implements EmbeddedServletContainerCustomizer {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
TomcatEmbeddedServletContainerFactory factory = (TomcatEmbeddedServletContainerFactory) container;
//设置端口
factory.setPort(10003);
//设置工作记录目录
factory.setBaseDirectory(new File("E:/temps"));
//设置日志(并不是事实记录)
factory.addEngineValves(getLogAccessLogValue());
//设置连接数
factory.addConnectorCustomizers(new MyTomcatConnectorCustomizer());
//添加错误页面
factory.addErrorPages(new org.springframework.boot.web.servlet.ErrorPage(HttpStatus.NOT_FOUND,"/404.html"));
//初始化一些设置
factory.addInitializers((servletContext ->{
System.out.println("server start!");
}));
}
private AccessLogValve getLogAccessLogValue() {
AccessLogValve log = new AccessLogValve();
//日志目录
log.setDirectory("e:/temps");
//开始日志
log.setEnabled(true);
//日志级别
log.setPattern("common");
//日志前缀
log.setPrefix("springboot-access-log");
//日志后缀
log.setSuffix(".txt");
return log;
}
}
class MyTomcatConnectorCustomizer implements TomcatConnectorCustomizer{
@Override
public void customize(Connector connector) {
Http11NioProtocol protocol=(Http11NioProtocol) connector.getProtocolHandler();
//设置最大连接数
protocol.setMaxConnections(2000);
//设置最大线程数
protocol.setMaxThreads(500);
}
}
日志输出目录
以上只是列举简答的配置,具体可以根据需要定制自己的优化方案!
更多推荐
已为社区贡献1条内容
所有评论(0)