1.スプリングブートビルトイントムキャットコンテナのカスタマイズと最適化。
> 3つの組み込みコンテナ、つまりUndertow、Jetty、Tomcat、Spring Bootがあります。これらの3つのコンテナは個別に実装されています。上部のインターフェイスはすべて、この記事の主要なコアでもある埋め込まれたサービスです。
内蔵コンテナをカスタマイズして最適化する主な方法は2つあります。最初の方法は、構成ファイルを介してそれらを構成することであり、その他の方法はコードをコードすることです。次に、上記の2つの方法が主に実装されています。
2。構成ファイルを介してTomcatをカスタマイズして最適化します
>構成のコアコンテンツについては、org.springframework.boot.autoconfigure.web.serverproperties Service属性クラスを参照してください。以下は、Tomcatの構成を示しています
サーバー:ポート:8081#tomcat set tomcat:accesslog:#enable log access enabled:true#log保存パスディレクトリ:e:/tmp/logs
その他のコンテンツについては、org.springframework.boot.autoconfigure.web.serverpropertiesクラスの組み込みプロパティを参照してください。
3.コードコードを介して内蔵コンテナの構成と最適化を実装する
>コードを使用して組み込みコンテナの最適化とカスタマイズを表示するには、2つの方法があります。 1つ目は、組み込みのサーブレットコンテナのカスタマイザー(org.springframework.boot.context.embedded.embededservletcontainercustomizer)を実装し、クラスをスプリングコンテナ管理に渡すことです。もう1つは、SpringコンテナでEmbedDedServletContainerFactory Interfaceの実装クラスを構成することです。ここでは、主に組み込みのTomcatをターゲットにしています。
3.1。最初の方法は、EmbeddedServletContainerCustomizerインターフェイスを実装し、スプリングコンテナ管理に引き渡すことです。
@Componentpublic class MyEmbeddedServletContainerCustomizer implements EmbeddedServletContainerCustomizer { @Override public void customize(ConfigurableEmbeddedServletContainer container) { //org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory //デフォルトはtomcat container system.out.println(container.getClass())であることを命令します。 tomcatembededservletcontainerfactory Factory =(tomcatembededservletcontainerfactory)コンテナ。 //ポートFactory.setport(8088)を設定します。 // tomcatルートディレクトリFactory.setbasedirectory(new file( "d:/tmp/tomcat")); //アクセスログストレージディレクトリFactory.AddContextValves(getLogaccessLogValue())を設定します。 // tomcatスレッドと接続Factory.addconnectorcustomizers(new mytomcatconnectorcustomizer())を設定します。 // servletcontextオブジェクトFactory.addinitializers((servletcontext) - > {system.out.println( "= = = = get server Information = =" + servletcontext.getServerinfo();}); } private AccessLogValve getLogAccessLogValue(){AccessLogValve AccessLogValve = new AccessLogValve(); AccessLogValve.setDirectory( "d:/tmp/tomcat/logs"); AccessLogValve.SetEnabled(true); AccessLogValve.setPattern(constants.accesslog.common_pattern); AccessLogValve.setPrefix( "SpringBoot-Access-Log"); AccessLogValve.Setsuffix( "。txt"); Return AccessLogValve; }}/*** tomcatの接続数とスレッドの数をカスタマイズ*/class mytomcatcontconectorcustomizerを実装しますtomcatconnectorcustomizer {@override public void customize(connector connector){//接続プロトコルhttp/1.1 System.out.out.outln(connector.getprotocol()); //接続プロトコルプロセッサーorg.apache.coyote.http11.http11nioprotocol system.out.println(connector.getProtocolhandler()。getClass()); // http11nioprotocol http11nioprotocol protocolhandler =(http11nioprotocol)connector.getProtocolhandler(); //接続の最大数Protocolhandler.setMaxConnections(2000)を設定します。 //スレッドProtocolhandler.setMaxThreads(500)の最大数を設定します。 }}3.1。 SpringコンテナでEmbeddedServletContainerFactoryの実装クラスを構成します
@SpringBootConfigurationPublic Class WebServerConfiguration {@Bean Public EmbedDedServletContainerFactory EmbedDedServletContainerFactory(){TomCatemBededDedServleTainErfactory Factory =新しいTomCatemBededDedServleTainErfactory(); //ポートファクトリーを設定します。セットポート(8089); // 404エラーインターフェイスFactory.AdderRorpages(new errorpage(httpstatus.not_found、 "/404.html")); // factory.addinitializers((servletcontext) - > {system.out.println( "= = = = get server Information = =" + servletcontext.getServerinfo();}); //接続の最大数とスレッドの最大数を設定します。AddConnectorCustomizers((connector) - > {http11nioprotocol protocolhandler =(http1nnioprotocol)connector.getProtocolhandler(); Protocolhandler.SetMaxNectionss(2000); Protocolhends(Protocolhends); }); //ロギングファイルがFactory.AddContextValves(getLogacsLogValue())にアクセスされる場所でディレクトリを設定します。ファクトリーを返します。 } private AccessLogValve getLogAccessLogValue(){AccessLogValve AccessLogValve = new AccessLogValve(); AccessLogValve.setDirectory( "d:/tmp/logs"); AccessLogValve.SetEnabled(true); AccessLogValve.setPattern(constants.accesslog.common_pattern); AccessLogValve.setPrefix( "SpringBoot-Access-Log"); AccessLogValve.Setsuffix( "。txt"); Return AccessLogValve; }}4。概要
上記は、あなたに紹介されたスプリングブートのカスタマイズと最適化の組み込みのTomcatコンテナの例の詳細な説明です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!