文章

配置 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 进行授权