修改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); } }
日志输出目录
以上只是列举简答的配置,具体可以根据需要定制自己的优化方案!