SpringBoot 내 장 된 Tomcat 설정

6411 단어 SpringBoot
글 목록
  • SpringBoot 내장 Tomcat 설정
  • 2. 내장 설정 발효 절차
  • 3. 클래스 로 직접 설정
  • SpringBoot 내 장 된 Tomcat 설정
    \ # \ # \ # 1. 자주 사용 하 는 설정
    server:
      #   http  
      port: 8080
      # tomcat  
      tomcat:
        #      
        max-threads: 6
        #      
        min-spare-threads: 3
        #     
        accept-count: 10
        #      
        max-connections: 1000
        #        
      connection-timeout: 10000
    

    2. 내 장 된 설정 적용 절차
  • 내 장 된 tomcat 설정 은 ServerProperties 을 통 해 설정 을 읽 을 수 있 으 며, 이러한 속성 에 따라 yml 파일 의 설정 필드 를 반추 할 수 있 습 니 다.
  • EmbeddedServletContainerCustomizerBeanPostProcessor 을 통 해 yml 프로필 에 설 치 된 설정 과 TomcatEmbeddedServletContainerFactory 를 연결 합 니 다.바 인 딩 의 구체 적 인 과정 은 다음 과 같다. 여기 서 마지막 으로 ServerPropertiescustomize 방법 을 호출 할 것 이다. 이 방법 은 바 인 딩 의 구체 적 인 집행 자 이 고 ConfigurableEmbeddedServletContainer 를 실제 TomcatEmbeddedServletContainerFactory 방법 에 던 져 서 우리 가 yml 에서 읽 은 설정 을 층 층 이 설정 하 는 것 이다.주의 하 세 요. 이곳 의 사고방식 은 참고 할 만 한 가치 가 있 습 니 다. 우 리 는 설정 파일 을 하나 가지 고 있 습 니 다. 또한 대상 이 값 속성 을 부여 해 야 할 때 하나의 방법 을 제공 하여 값 을 매개 변수 로 넣 을 수 있 습 니 다
  • 마지막 TomcatEmbeddedServletContainerFactory 은 getEmbedded ServletContainer 방법 으로 초기 화 됩 니 다. 처음에 얻 은 것 은 기본 connector 입 니 다. 마찬가지 로 customizeConnector 방법 으로 우리 가 앞에서 설정 한 매개 변 수 를 초기 화하 여 완성 합 니 다.

  • 3. 클래스 로 직접 설정
    클래스 로 직접 설정 하 는 방법 은 세 가지 가 있 지만 위의 파일 설정 과 혼용 하지 않도록 주의해 야 합 니 다.
    import org.apache.catalina.connector.Connector;  
    import org.apache.coyote.http11.Http11NioProtocol;  
    import org.springframework.boot.context.embedded.EmbeddedServletContainer;  
    import org.springframework.boot.context.embedded.ServletContextInitializer;  
    import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;  
    import org.springframework.stereotype.Component;  
      
    @Component()  
    public class MyEmbeddedServletContainerFactory extends TomcatEmbeddedServletContainerFactory  
    {  
        public EmbeddedServletContainer getEmbeddedServletContainer(ServletContextInitializer... initializers)  
        {  
            //      
            this.setPort(8081);  
            return super.getEmbeddedServletContainer(initializers);  
        }  
          
        protected void customizeConnector(Connector connector)  
        {  
            super.customizeConnector(connector);  
            Http11NioProtocol protocol = (Http11NioProtocol)connector.getProtocolHandler();  
            //         
            protocol.setMaxConnections(2000);  
            //         
            protocol.setMaxThreads(2000);  
            protocol.setConnectionTimeout(30000);  
        }  
    }
    
    import org.apache.catalina.connector.Connector;  
    import org.apache.coyote.http11.Http11NioProtocol;  
    import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;  
    import org.springframework.boot.context.embedded.tomcat.TomcatConnectorCustomizer;  
    import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;  
    import org.springframework.context.annotation.Bean;  
    import org.springframework.context.annotation.Configuration;  
      
    @Configuration  
    public class WebServerConfiguration  
    {  
        @Bean  
        public EmbeddedServletContainerFactory createEmbeddedServletContainerFactory()  
        {  
            TomcatEmbeddedServletContainerFactory tomcatFactory = new TomcatEmbeddedServletContainerFactory();  
            tomcatFactory.setPort(8081);  
            tomcatFactory.addConnectorCustomizers(new MyTomcatConnectorCustomizer());  
            return tomcatFactory;  
        }  
    }  
    class MyTomcatConnectorCustomizer implements TomcatConnectorCustomizer  
    {  
        public void customize(Connector connector)  
        {  
            Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();  
            //         
            protocol.setMaxConnections(2000);  
            //         
            protocol.setMaxThreads(2000);  
            protocol.setConnectionTimeout(30000);  
        }  
    }
    
    import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;  
    import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;  
    import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;  
    import org.springframework.context.annotation.Bean;  
    import org.springframework.context.annotation.Configuration;  
      
    @Configuration  
    public class WebServerConfiguration  
    {  
        @Bean  
        public EmbeddedServletContainerCustomizer createEmbeddedServletContainerCustomizer()  
        {  
            return new MyEmbeddedServletContainerCustomizer();  
        }  
    }  
      
    class MyEmbeddedServletContainerCustomizer implements EmbeddedServletContainerCustomizer  
    {  
        public void customize(ConfigurableEmbeddedServletContainer container)  
        {  
            TomcatEmbeddedServletContainerFactory tomcatFactory = (TomcatEmbeddedServletContainerFactory)container;  
            tomcatFactory.setPort(8081);  
            //                
        }  
    }
    

    위의 세 가지 방법 을 통 해 알 수 있 듯 이 실제 대동소이 하고 핵심 적 인 사 고 는 바로 개작 TomcatEmbeddedServletContainerFactory 중의 관련 배치 이다.하 나 는 상속 TomcatEmbeddedServletContainerFactory 이 고, 다른 하 나 는 직접 자신의 new 하나 이 며, 세 번 째 는 교체 EmbeddedServletContainerCustomizer 이다.

    좋은 웹페이지 즐겨찾기