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

詳解如何更改SpringBoot TomCat運行方式

 更新時間:2021年04月27日 11:30:12   作者:BeiShangBuZaiLai  
這篇文章主要介紹了詳解如何更改SpringBoot TomCat運行方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1. 為什么要更改SpringBoot運行方式?

Tomcat Connector(連接器)有三種運行模式:bio nio apr

bio(blocking I/O)

  • 即阻塞式I/O操作,表示Tomcat使用的是傳統(tǒng)的Java I/O操作(即java.io包及其子包),是基于JAVA的HTTP/1.1連接器,Tomcat7以下版本在默認情況下是以bio模式運行的。一般而言,bio模式是三種運行模式中性能最低的一種。我們可以通過Tomcat Manager來查看服務(wù)器的當前狀態(tài)。(Tomcat7 或以下,在 Linux 系統(tǒng)中默認使用這種方式)
  • 一個線程處理一個請求,缺點:并發(fā)量高時,線程數(shù)較多,浪費資源

nio(new I/O)

  • 是Java SE 1.4及后續(xù)版本提供的一種新的I/O操作方式(即java.nio包及其子包)。Java nio是一個基于緩沖區(qū)、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O(非阻塞IO)的縮寫。它擁有比傳統(tǒng)I/O操作(bio)更好的并發(fā)運行性能。要讓Tomcat以nio模式來運行只需要在Tomcat安裝目錄/conf/server.xml 中將對應(yīng)的中protocol的屬性值改為 org.apache.coyote.http11.Http11NioProtocol即可
 <Connector port="1024" protocol="org.apache.coyote.http11.Http11NioProtocol"
               connectionTimeout="20000"
               redirectPort="8443" />

apr(Apache Portable Runtime/Apache可移植運行時)

  • Tomcat將以JNI的形式調(diào)用Apache HTTP服務(wù)器的核心動態(tài)鏈接庫來處理文件讀取或網(wǎng)絡(luò)傳輸操作,從而大大地提高Tomcat對靜態(tài)文件的處理性能。Tomcat apr也是在Tomcat上運行高并發(fā)應(yīng)用的首選模式。從操作系統(tǒng)級別來解決異步的IO問題
  • tomcat8.0 以上默認已經(jīng)支持了apr(低版本趕緊換了吧)

而SpringBoot默認是以 java -Xmx256m -Xss256k -jar xx.jar 來運行內(nèi)置Tomcat啟動方式默認是NIO,所以想用Apr方式啟動怎么辦呢?

2.移除SpringBoot內(nèi)置Tomcat容器。

 更改pom文件

	 <packaging>jar</packaging> 改為=> <packaging>war</packaging>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 移除嵌入式tomcat插件--> 
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- 移除內(nèi)嵌Tomcat需要重新添加servlet -->
        <dependency>
		    <groupId>javax.servlet</groupId>
		    <artifactId>javax.servlet-api</artifactId>
		    <version>${servlet.version}</version>
		    <scope>provided</scope>
		</dependency>

在 Application 啟動類中繼承SpringBootServletInitializer具體類代碼如下

	package com.ctx.springboot;
	import org.springframework.boot.autoconfigure.SpringBootApplication;
	import org.springframework.boot.builder.SpringApplicationBuilder;
	import org.springframework.boot.web.support.SpringBootServletInitializer;
	@SpringBootApplication
	public class SpringBootStartApplication extends SpringBootServletInitializer {
		@Override
		protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
			return builder.sources(SpringBootStartApplication.class);
		}
	}

這樣就可以使用把SpringBoot項目打包成war扔到8.0以上的tomcat里跑運行方式默認就變成apr了如下圖:

這里寫圖片描述

到此這篇關(guān)于詳解如何更改SpringBoot TomCat運行方式的文章就介紹到這了,更多相關(guān)更改SpringBoot TomCat運行方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot項目main函數(shù)啟動的操作

    springboot項目main函數(shù)啟動的操作

    這篇文章主要介紹了springboot項目main函數(shù)啟動的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java 中maven pom.xml文件教程詳解

    java 中maven pom.xml文件教程詳解

    這篇文章主要介紹了java 中maven pom.xml文件教程詳解,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • Jersey框架的統(tǒng)一異常處理機制分析

    Jersey框架的統(tǒng)一異常處理機制分析

    初學者往往不清楚java的異常為什么會設(shè)計成這個樣子,他們通常會對異常只進行簡單的處理
    2016-07-07
  • SpringBoot使用CommandLineRunner接口完成資源初始化方式

    SpringBoot使用CommandLineRunner接口完成資源初始化方式

    這篇文章主要介紹了SpringBoot使用CommandLineRunner接口完成資源初始化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • java 靜態(tài)鏈表實現(xiàn)示例詳解

    java 靜態(tài)鏈表實現(xiàn)示例詳解

    這篇文章主要為大家介紹了java 靜態(tài)鏈表實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • SpringMVC適配器模式代碼示例

    SpringMVC適配器模式代碼示例

    這篇文章主要介紹了SpringMVC適配器模式代碼示例,涉及模擬springmvc的Java代碼等相關(guān)內(nèi)容,具有一定借鑒價值,需要的朋友可以參考下。
    2017-11-11
  • 解決Spring調(diào)用Feign報錯:java.io.IOException:Incomplete output stream問題

    解決Spring調(diào)用Feign報錯:java.io.IOException:Incomplete output

    這篇文章主要介紹了解決Spring調(diào)用Feign報錯:java.io.IOException:Incomplete output stream問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 深入理解spring boot異步調(diào)用方式@Async

    深入理解spring boot異步調(diào)用方式@Async

    Spring為任務(wù)調(diào)度與異步方法執(zhí)行提供了注解支持。通過在方法上設(shè)置@Async注解,可使得方法被異步調(diào)用。下面這篇文章主要給大家介紹了關(guān)于spring boot異步調(diào)用方式@Async的相關(guān)資料,需要的朋友可以參考下。
    2017-07-07
  • Java 如何快速實現(xiàn)一個連接池

    Java 如何快速實現(xiàn)一個連接池

    有沒有一個通用的庫可以快速實現(xiàn)一個線程池呢?得益于 Java 完善的生態(tài),前人們針對這種需要開發(fā)了一個通用庫:Apache Commons Pool(下文簡稱 ACP)。本質(zhì)上來說,ACP 庫提供的是管理對象池的通用能力,當然也可以用來管理連接池了!
    2021-05-05
  • springboot2中HikariCP連接池的相關(guān)配置問題

    springboot2中HikariCP連接池的相關(guān)配置問題

    這篇文章主要介紹了springboot2中HikariCP連接池的相關(guān)配置問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論