溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

SpringBoot在怎么外置Tomcat

發(fā)布時間:2021-07-08 16:51:55 來源:億速云 閱讀:267 作者:Leah 欄目:服務(wù)器

這篇文章將為大家詳細講解有關(guān)SpringBoot在怎么外置Tomcat,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

配置包管理文件

打開項目根目錄的pom.xml文件,在project標簽下聲明打包格式為war,代碼如下所示:

<!--打包格式為war--> <packaging>war</packaging>

排除內(nèi)置tomcat

打包時默認會將內(nèi)置的tomcat打包進去,這就造成了沖突問題,所以此處我們需要將內(nèi)置的排除掉,在dependencies標簽下添加下述依賴。

<!--當打war包到tomcat時,自動排除內(nèi)置的tomcat,避免二者產(chǎn)生沖突--> <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-tomcat</artifactId>   <!--打包的時候可以不用包進去,別的設(shè)施會提供。事實上該依賴理論上可以參與編譯,測試,運行等周期。                 相當于compile,但是打包階段做了exclude操作-->   <scope>provided</scope> </dependency>

此處還有一個做法是在spring-boot-starter-web依賴內(nèi)排除掉依賴內(nèi)排除掉tomcat,這樣做他會把websocket相關(guān)的包也給排除掉,你項目內(nèi)的websocket就沒法使用了,需要手動多引入javax.websocket-api這個依賴,這個依賴的最后更新時間是2016年,所以不推薦使用這個方法。

websocket相關(guān)

既然使用了外置tomcat,那么原先使用內(nèi)置tomcat所配置的東西就可以刪除了(當然,你不刪也是可以的,但是為了代碼規(guī)范最好還是刪掉吧),我這里刪除的東西如下:

  • pom.xml中的依賴

<!--添加websocket支持--> <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-websocket</artifactId> </dependency>
  • websocket的啟動配置,代碼如下

package com.lk.config;  import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.server.standard.ServerEndpointExporter;  /**  * websocket啟動配置  */ @Configuration public class WebSocketConfig {     @Bean     public ServerEndpointExporter serverEndpointExporter() {         return new ServerEndpointExporter();     } }

設(shè)置打包名與路徑

如果不設(shè)置名字和路徑默認的打包名會附帶帶版本號,打包路徑在當前項目的的target目錄下,我們可以通過在pom.xml中的build標簽下對其進行自定義,代碼如下:

<!--打包的目錄--> <directory></directory> <!--打包時的文件名--> <finalName></finalName>

修改啟動類

接下來,我們修改下SpringBoot的啟動類,讓其繼承SpringBootServletInitializer,重寫configure方法,告訴它我們使用的是外置Tomcat,代碼如下:

@SpringBootApplication public class ChatSystemServerApplication extends SpringBootServletInitializer {  // 外置tomcat需要繼承SpringBootServletInitializer,重寫SpringApplicationBuilder  @Override  protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {   return application.sources(ChatSystemServerApplication.class);  }  public static void main(String[] args) {   SpringApplication.run(ChatSystemServerApplication.class, args);  } }

至此,我們的項目配置部分就完成了,我們刷新下pom.xml文件,在idea的maven工具欄點clean,然后點package,就可以打一個war包在target目錄下了。

tomcat配置

我的項目啟用了https,使用外置tomcat后,在application.yml中配置的https就失效了,我們需要在tomcat中重新配一下。

開啟https訪問

我們打開tomcat的conf目錄下的server.xml,找到name為Catalina的Service標簽里的標簽,修改port和redirectPort屬性,代碼如下:

隨后,在上述標簽的后面加上下述代碼,讓非80端口的訪問跳轉(zhuǎn)到443端口

配置SSL證書

把域名的證書文件server.jks和keystorePass.txt文件放在conf目錄下,在server.xml中的name為Catalina的Service標簽里添加下述代碼。

<!--配置SSL證書--> <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"            maxThreads="150" SSLEnabled="true">      <SSLHostConfig>           <Certificate certificateKeystoreFile="conf/server.jks"                      certificateKeystorePassword=""                      type="RSA"/>      </SSLHostConfig> </Connector>

certificateKeystoreFile為你的證書文件,certificateKeystorePassword為你的證書文件密碼,這個密碼在keystorePass.txt文件里

配置路徑訪問

將war包放入tomcat的webapps目錄下后,我們想反問需要帶上項目名才可以,如果我們不想加項目名就能直接訪問我們的項目,就需要另作配置了。

在server.xml文件中,找到標簽,在其中添加Context標簽,代碼如下:

<!--配置路徑訪問--> Context path="" docBase=""></Context>

path: 留空則表示為域名根目錄,docBase為你的war包所在目錄

設(shè)置默認首頁

由于我們修改了tomcat的默認訪問頁面,所有的根目錄訪問時不會走ROOT目錄下的頁面,此時就需要在項目里配置一個根目錄的映射,讓其跳轉(zhuǎn)到我們指定的項目內(nèi)的ststic中的頁面,代碼如下:

// 默認首頁映射 @Controller public class DefaultController {     @RequestMapping("/")     public String Welcome(){         return "forward:index.html";     } }

關(guān)于SpringBoot在怎么外置Tomcat就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI