zoukankan      html  css  js  c++  java
  • 聊聊springboot2的embeded container的配置改动

    本文主要研究下springboot2的embeded container的配置改动

    springboot 1.x

    import org.apache.catalina.connector.Connector;
    import org.apache.coyote.ProtocolHandler;
    import org.apache.coyote.http11.Http11NioProtocol;
    import org.apache.tomcat.util.threads.ThreadPoolExecutor;
    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.boot.web.servlet.ErrorPage;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.http.HttpStatus;
    import org.springframework.stereotype.Component;
    
    
    @Component
    public class EmbeddedTomcatConfig implements EmbeddedServletContainerCustomizer{
    
        @Override
        public void customize(ConfigurableEmbeddedServletContainer container) {
            TomcatEmbeddedServletContainerFactory factory = (TomcatEmbeddedServletContainerFactory)container;
            factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
                @Override
                public void customize(Connector connector) {
                    Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
                    protocol.setMaxConnections(200);
                    protocol.setMaxThreads(200);
                    protocol.setSelectorTimeout(3000);
                    protocol.setSessionTimeout(3000);
                    protocol.setConnectionTimeout(3000);
                }
            });
        }
    }
    通过实现org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer的customize方法来实现自定义

    springboot 2.x

    import org.apache.catalina.connector.Connector;
    import org.apache.coyote.ProtocolHandler;
    import org.apache.coyote.http11.Http11NioProtocol;
    import org.apache.tomcat.util.threads.ThreadPoolExecutor;
    import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
    import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
    import org.springframework.boot.web.server.WebServerFactoryCustomizer;
    import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.Ordered;
    import org.springframework.stereotype.Component;
    
    
    @Component
    public class EmbeddedTomcatConfig implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
    
        @Override
        public void customize(ConfigurableServletWebServerFactory factory) {
            ((TomcatServletWebServerFactory)factory).addConnectorCustomizers(new TomcatConnectorCustomizer() {
                @Override
                public void customize(Connector connector) {
                    Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
                    protocol.setMaxConnections(200);
                    protocol.setMaxThreads(200);
                    protocol.setSelectorTimeout(3000);
                    protocol.setSessionTimeout(3000);
                    protocol.setConnectionTimeout(3000);
                }
            });
        }
    }
    在2.x版本改为实现org.springframework.boot.web.server.WebServerFactoryCustomizer接口的customize方法

    小结

    springboot1.x的相关类如下:

    • org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer
    • org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer
    • org.springframework.boot.context.embedded.tomcat.TomcatConnectorCustomizer
    • org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory

    springboot2.x的相关类如下:

    • org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory
    • org.springframework.boot.web.server.WebServerFactoryCustomizer
    • org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer
    • org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory
    对比一下可以清楚看到相关的改动
  • 相关阅读:
    NS2网络模拟(2)-丢包率
    NS2网络模拟(3)-吞吐率
    NS2网络模拟(4)-吞吐率图
    NS2网络模拟(5)-homework01.tcl
    nagios
    Javascript 统计复选框选中个数
    JUnit单元测试实践:测试工具类和方法(EmptyUtils)
    2013年工作中遇到的20个问题(Bug):161-180
    2013年工作中遇到的20个问题(Bug):161-180
    数据持久层(DAO)通用API的实现
  • 原文地址:https://www.cnblogs.com/JAYIT/p/10863147.html
Copyright © 2011-2022 走看看