配置 Tomcat
1.实现EmbeddedServletContainerCustomizer接口,并把实现的类纳入到Spring容器中管理
1
@Componentpublic class MyEmbeddedServletContainerCustomizer implements EmbeddedServletContainerCustomizer { public void customize(ConfigurableEmbeddedServletContainer arg0) { TomcatEmbeddedServletContainerFactory factory= (TomcatEmbeddedServletContainerFactory)arg0; factory.setPort(10003); factory.setBaseDirectory(new File("E:\\WorkSpace\\WS_Eclipse\\springboot\\tomcat")); factory.addContextValves(getAccessLogValve()); //设置日志 factory.addInitializers((servletContext)->{ //初始化 System.out.println("=========servletContext startup============");// servletContext.addListener(className); //添加 监听器// servletContext.addFilter(filterName, filter); //添加 过滤器 servletContext.setAttribute("startup", "true"); //可以设置 全局变量 }); factory.addConnectorCustomizers(new MyTomcatConnectorCustomizer()); //设置连接器 } //日志设置 private AccessLogValve getAccessLogValve() { AccessLogValve log=new AccessLogValve(); log.setDirectory("E:\\WorkSpace\\WS_Eclipse\\springboot\\tomcat\\logs"); log.setEnabled(true); log.setPattern("common"); log.setPrefix("springboot-access-log"); log.setSuffix(".txt"); return log; }}//连接器class MyTomcatConnectorCustomizer implements TomcatConnectorCustomizer{ public void customize(Connector arg0) { Http11NioProtocol protocol=(Http11NioProtocol)arg0.getProtocolHandler(); protocol.setMaxConnections(2000); //最大连接数 protocol.setMaxThreads(500); //最大线程数 }}
2.再spring容器中装配一个EmbeddedServletContainerFactory对象。
1
@SpringBootConfigurationpublic class WebServerConfiguration { @Bean public EmbeddedServletContainerFactory createEmbeddedServletContainerFactory() { TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(); factory.setPort(10003); factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/error/404.html")); factory.addInitializers((servletContext) -> { System.out.println("=========servletContext startup============"); servletContext.setAttribute("startup", "true"); // 可以设置 全局变量 }); factory.addContextValves(getAccessLogValve()); return factory; } // 日志设置 private AccessLogValve getAccessLogValve() { AccessLogValve log = new AccessLogValve(); log.setDirectory("E:\\WorkSpace\\WS_Eclipse\\springboot\\tomcat\\logs"); log.setEnabled(true); log.setPattern("common"); log.setPrefix("springboot-access-log"); log.setSuffix(".txt"); return log; }}
本文由作者按照 CC BY 4.0 进行授权