1. Personalização da inicialização da mola e otimização de contêineres Tomcat embutidos.
> Existem três recipientes embutidos, a saber, a Vonda, Jetty, Tomcat e Spring Boot. Esses três contêineres são implementados separadamente. As interfaces superiores são todas incorporadas, o SERVLETContainerFactory, que também é o principal núcleo deste artigo.
Existem duas maneiras principais de personalizar e otimizar recipientes embutidos. A primeira maneira é configurá -los através de arquivos de configuração e a outra maneira é codificar o código. Em seguida, as duas maneiras acima são implementadas principalmente.
2. Personalize e otimize o Tomcat através de arquivos de configuração
> Para obter o conteúdo principal da configuração, consulte o org.springframework.boot.autoconfigure.web.serverproperties Serviço de atributo de atributo. A seguir, mostra alguma configuração do tomcat
Servidor: Porta: 8081 # TomCat Set TomCat: AccessLog: # Ativar acesso ao log ativado: true # Log Saving Path Directory: e:/tmp/logs
Para obter mais conteúdo de configuração, consulte as propriedades internas da classe org.springframework.boot.autoconfigure.web.serverproperties.
3. Implemente a configuração e otimização de contêineres internos através do código do código
> Existem duas maneiras de exibir a otimização e personalização de contêineres embutidos usando o código. O primeiro é implementar o personalizador de contêineres de servlet interno (org.springframework.boot.context.embedded.embeddedservletContainerCustomizer) e entregar a classe ao gerenciamento de contêineres de mola. O outro é configurar a classe de implementação da interface do ServletLenerFactory IncledDedContAinerFactory no contêiner Spring. Aqui, alvejamos principalmente o tomcat embutido, ou seja, a classe TomCatEmbeddedServletContainerFactory
3.1. O primeiro método é implementar a interface incorporada
@ComPonenPublic Classe MyEMBedDedServLeTContAineRerCustomizer implementos incorporados de servletContaiRerCustomizer {@Override public void personalize (configurableMeddedServletContainer Container) {//org.springframework.Context.Embedded.TomCat.TomCatomComcramework.Context.Embedded.TomCat.TomCatomComcramework.Context.Embedded.TomCat.TomCatomComCringFrame.Boot.Context.embedded.ton é Tomcat Container System.out.println (content.getClass ()); TOMCATEMBEDDEDDERVLETCONTAINERFFACTORY = ((TOMCATEMBEDDEDSERVletContainerFactory) Contêiner; // Definir Port Factory.SetPort (8088); // Defina o diretório raiz do tomcat Factory.SetBasedirectory (novo arquivo ("d:/tmp/tomcat")); // Defina o Diretório de Armazenamento de Log Acesso Factory.addContextValVes (getLogAccessLogValue ()); // Defina threads e conexões TomCat Factory.addConnectionCustomizers (new MyTomcatConnectorCustomizer ()); // inicialize o servletContext Object factory.addinitializers ((servletContext) -> {System.out.println ("= = = = get Information = =" + servletContext.getServerinfo ());}); } Private AccessLogVValve getLogAccessLogValue () {AccessLogVValVE AccessLogVVALVE = new AccessLogVValve (); accessLogVValve.SetDirectory ("d:/tmp/tomcat/logs"); accessLogVvalve.setEnabled (true); accessLogVvalve.SetPattern (constantes.accessLog.common_pattern); accessLogVvalve.SetPrefix ("Springboot-access-Log"); accessLogVvalve.SetSuffix (". TXT"); return accessLogVvalve; }}/*** Personalize o número de conexões e threads de tomcat*/classe myTomcatConnectionCustomizer implementa TomCatConnectorCustomizer {@Override public void personalize (conector do conector) {// conexão protocol http/1.1 system.out.println; // Processador de protocolo de conexão org.apache.coyote.http11.http11nioprotocol System.out.println (Connector.getProtocolHandler (). GetClass ()); // http11nioprotocol http11nioprotocol protocolHandler = (http11nioprotocol) conector.getprotocolhandler (); // Defina o número máximo de conexões protocolhandler.setMaxConnections (2000); // defina o número máximo de threads protocolhandler.setMaxthreads (500); }}3.1. Configure a classe de implementação incorporada
@SpringbootConfigurationPublic Classe WebServerConfiguration {@Bean public incorporadoServLeTContainerFactory incorporadoServletContainerFactory () {TOMCATEMBEDDEDDERVLEVLEGRONERFACTORY FACTORY = NOVA TOMCATEMBEDDEDDEDDEDDEDCONTLEGRONERCONTENERFABRECONTRAL; // Definir Port Factory.SetPort (8089); // Definir 404 Erro Interface Factory.adderRorpages (New ErrorPage (httpstatus.not_found, "/404.html")); // Defina o Factory.addinitializers ((servletContext) -> {System.out.println ("= = = = get Information = =" + ServletContext.getServerinfo ());}); // defina o número máximo de conexões e o número máximo de threads factory.addconnectorcustomizers ((conector) -> {http11nioprotocol protocolHandler = (http11nioProtocol) conector.getProtocolHandler (); }); // Defina o diretório em que o arquivo de log é acessado Factory.addContextValves (getLogAccessLogValue ()); fábrica de retorno; } Private AccessLogVValve getLogAccessLogValue () {AccessLogVValVE AccessLogVVALVE = new AccessLogVValve (); accessLogVvalve.SetDirectory ("d:/tmp/logs"); accessLogVvalve.setEnabled (true); accessLogVvalve.SetPattern (constantes.accessLog.common_pattern); accessLogVvalve.SetPrefix ("Springboot-access-Log"); accessLogVvalve.SetSuffix (". TXT"); return accessLogVvalve; }}4. Resumo
O acima exposto é uma explicação detalhada dos exemplos de contêiner do Tomcat embutidos de personalização e otimização de inicialização da mola introduzida. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!