欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot如何優(yōu)化內(nèi)嵌的Tomcat示例詳解

 更新時(shí)間:2017年09月07日 15:18:55   作者:西夏一品堂  
spring boot默認(rèn)web程序啟用tomcat內(nèi)嵌容器,監(jiān)聽(tīng)8080端口,下面這篇文章主要給大家介紹了關(guān)于Spring Boot如何優(yōu)化內(nèi)嵌Tomcat的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。

前言

本文主要給大家介紹了關(guān)于Spring Boot優(yōu)化內(nèi)嵌Tomcat的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話不多說(shuō)了,來(lái)一看看詳細(xì)的介紹吧。

Spring Boot測(cè)試版本

<parent> 
 <groupId>org.springframework.boot</groupId> 
 <artifactId>spring-boot-starter-parent</artifactId> 
 <version>1.3.3.RELEASE</version> 
</parent> 
<dependencies> 
 <dependency> 
  <groupId>org.springframework.boot</groupId> 
  <artifactId>spring-boot-starter-web</artifactId> 
 </dependency> 
</dependencies> 

SpringBoot默認(rèn)使用的是Tomcat作為web server

springboot中默認(rèn)可以通過(guò)配置如下參數(shù)設(shè)置內(nèi)嵌容器Tomcat的端口,最大線程數(shù)等等

server.port=8081
server.tomcat.max-threads=1000

但是,無(wú)法設(shè)置最大連接數(shù),而最大連接數(shù)直接影響到Tomcat的性能,如何調(diào)整這個(gè)最大連接數(shù)呢?

以下有三種方法

第一種:

package com.web.server; 
 
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) 
 { 
  //設(shè)置端口 
  this.setPort(8081); 
  return super.getEmbeddedServletContainer(initializers); 
 } 
  
 protected void customizeConnector(Connector connector) 
 { 
  super.customizeConnector(connector); 
  Http11NioProtocol protocol = (Http11NioProtocol)connector.getProtocolHandler(); 
  //設(shè)置最大連接數(shù) 
  protocol.setMaxConnections(2000); 
  //設(shè)置最大線程數(shù) 
  protocol.setMaxThreads(2000); 
  protocol.setConnectionTimeout(30000); 
 } 
} 

第二種:

package com.web.server; 
 
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(); 
  //設(shè)置最大連接數(shù) 
  protocol.setMaxConnections(2000); 
  //設(shè)置最大線程數(shù) 
  protocol.setMaxThreads(2000); 
  protocol.setConnectionTimeout(30000); 
 } 
} 

第三種:

package com.web.server; 
 
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); 
  //下面的操作可以參照上面的方法 
 } 
} 

最后,如果發(fā)現(xiàn)沒(méi)有生效,就把a(bǔ)pplication.properties配置里面關(guān)于Tomcat的一些配置(server.*)全部刪掉,就OK了。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 攔截Druid數(shù)據(jù)源自動(dòng)注入帳密解密實(shí)現(xiàn)詳解

    攔截Druid數(shù)據(jù)源自動(dòng)注入帳密解密實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了攔截Druid數(shù)據(jù)源自動(dòng)注入帳密解密實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Spring Boot利用Docker快速部署項(xiàng)目的完整步驟

    Spring Boot利用Docker快速部署項(xiàng)目的完整步驟

    這篇文章主要給大家介紹了關(guān)于Spring Boot利用Docker快速部署項(xiàng)目的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Java代理模式的示例詳解

    Java代理模式的示例詳解

    代理模式(Proxy Parttern)為一個(gè)對(duì)象提供一個(gè)替身,來(lái)控制這個(gè)對(duì)象的訪問(wèn),即通過(guò)代理對(duì)象來(lái)訪問(wèn)目標(biāo)對(duì)象。本文將通過(guò)示例詳細(xì)講解一下這個(gè)模式,需要的可以參考一下
    2022-02-02
  • JPA實(shí)現(xiàn)多條件分頁(yè)查詢

    JPA實(shí)現(xiàn)多條件分頁(yè)查詢

    這篇文章主要介紹了JPA實(shí)現(xiàn)多條件分頁(yè)查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 在mybatis中如何將Map作為參數(shù)

    在mybatis中如何將Map作為參數(shù)

    這篇文章主要介紹了在mybatis中如何將Map作為參數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • MyBatis源碼淺析(一)開(kāi)篇

    MyBatis源碼淺析(一)開(kāi)篇

    源碼的學(xué)習(xí)好處多多,Mybatis源碼量少、邏輯簡(jiǎn)單。下面將通過(guò)本文給大家詳解,低mybatis源碼淺析感興趣的朋友一起看看吧
    2016-11-11
  • Java 數(shù)據(jù)流之Broadcast State

    Java 數(shù)據(jù)流之Broadcast State

    這篇文章主要介紹了Java 數(shù)據(jù)流之Broadcast State,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • java判斷空的實(shí)現(xiàn)方法

    java判斷空的實(shí)現(xiàn)方法

    字符串判斷空有兩種情況:一個(gè)是分配了內(nèi)存但值為空(""),另一個(gè)是未分配內(nèi)存(null),判斷方法包括isEmpty()和isBlank(),其中isBlank()還可以過(guò)濾空格、制表符,對(duì)于列表,判斷不為空可以使用list!=null && !list.isEmpty()或list!=null && list.size()>0
    2024-09-09
  • spring boot整合CAS配置詳解

    spring boot整合CAS配置詳解

    這篇文章主要介紹了spring boot整合CAS配置詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Java高級(jí)特性基礎(chǔ)之反射五連問(wèn)

    Java高級(jí)特性基礎(chǔ)之反射五連問(wèn)

    反射賦予了我們?cè)谶\(yùn)行時(shí)分析類以及執(zhí)行類中方法的能力。通過(guò)反射你可以獲取任意一個(gè)類的所有屬性和方法,你還可以調(diào)用這些方法和屬性。本文就來(lái)和大家詳細(xì)聊聊Java中的反射,感興趣的可以了解一下
    2023-01-01

最新評(píng)論