SpringBoot中修改内嵌tomcat的3种方式
方式一、修改application.properties文件中属性
server.port=8081 server.address=127.0.0.1 server.tomcat.accesslog.enabled=true server.tomcat.accesslog.directory=d\:/springboot/logs
绑定IP:上面的配置只能在浏览器输入localhost:8081或者127.0.0.1访问
日志路径:D:\springboot\logs\access_log.2019-12-05.log,(2019-12-05是运行时间)
方式二、实现WebServerFactoryCustomizer接口
@Component public class MyWebServerFactoryCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> { @Override public void customize(TomcatServletWebServerFactory factory) { factory.setPort(8888);//tomcat端口 factory.setBaseDirectory(new File("d:/temp/tomcat"));//缓存路径 factory.addContextValves(getLogAccessLogValue());//设置访问日志 factory.addConnectorCustomizers(new MyTomcatConnectorCustomizer());//tomcat自定义访问连接 } private AccessLogValve getLogAccessLogValue(){ AccessLogValve log=new AccessLogValve(); log.setDirectory("d:/temp/logs");//日志路径 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 protocal=(Http11NioProtocol)connector.getProtocolHandler(); protocal.setMaxConnections(20000);//最大连接数 protocal.setMaxThreads(500);//最大线程数 } }
方式三、装配AbstractServletWebServerFactory的bean
@SpringBootConfiguration public class WebServerConfiguration { @Bean public AbstractServletWebServerFactory createServletWebServerFactory(){ TomcatServletWebServerFactory factory=new TomcatServletWebServerFactory(); factory.setPort(10008);//tomcat端口 factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND,"/404.html"));//设置状态码对应的错误页面 factory.addContextValves(getLogAccessLogValue());//设置日志 factory.addInitializers(new MyServletContext());//tomcat容器初始化时执行 return factory; } private AccessLogValve getLogAccessLogValue(){ AccessLogValve log=new AccessLogValve(); log.setDirectory("d:/temp/logs");//日志路径 log.setEnabled(true);//启用日志 log.setPattern("common");//输入日志格式 log.setPrefix("springboot-access-log");//日志名称 log.setSuffix(".txt");//日志后缀 return log; } } class MyServletContext implements ServletContextInitializer{ @Override public void onStartup(ServletContext servletContext) throws ServletException { System.out.println("------------servletContext start------------"); } }
浙公网安备 33010602011771号