SpringBoot外接Tomcat
在部署我開源專案後端程式碼時,一直採用的jar包形式,一開始覺得沒什麼問題,挺方便的,這幾天後端程式碼改動比較頻繁,打成jar包後,每次更新都需要去伺服器停止舊的服務,過於繁瑣。 |
索性直接採用外接tomcat吧,打成war包方便一點,本文就跟大家分享下我的實現過程,歡迎各位感興趣的開發者閱讀本文。
我用的SpringBoot版本為2.x,Tomcat版本為9.x,jdk版本為1.8,使用maven來管理專案,接下來就跟大家分享下我的實現過程。
開啟專案根目錄的pom.xml檔案,在project標籤下宣告打包格式為war,程式碼如下所示:
<打包格式為war> <packaging>war</packaging> 排除內建tomcat
打包時預設會將內建的tomcat打包進去,這就造成了衝突問題,所以此處我們需要將內建的排除掉,在dependencies標籤下新增下述依賴。
<當打war包到tomcat時,自動排除內建的tomcat,避免二者產生衝突> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <!--打包的時候可以不用包進去,別的設施會提供。事實上該依賴理論上可以參與編譯,測試,執行等週期。 相當於compile,但是打包階段做了exclude操作--> <scope>provided</scope> </dependency>
此處還有一個做法是在spring-boot-starter-web依賴內排除掉依賴內排除掉tomcat,這樣做他會把websocket相關的包也給排除掉,你專案內的websocket就沒法使用了,需要手動多引入javax.websocket-api這個依賴,這個依賴的最後更新時間是2016年,所以不推薦使用這個方法。
既然使用了外接tomcat,那麼原先使用內建tomcat所配置的東西就可以刪除了(當然,你不刪也是可以的,但是為了程式碼規範最好還是刪掉吧),我這裡刪除的東西如下:
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(); } }
如果不設定名字和路徑預設的打包名會附帶帶版本號,打包路徑在當前專案的的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目錄下了。
我的專案啟用了https,使用外接tomcat後,在application.yml中配置的https就失效了,我們需要在tomcat中重新配一下。
開啟https訪問
我們開啟tomcat的conf目錄下的server.xml,找到name為Catalina的Service標籤裡的標籤,修改port和redirectPort屬性,程式碼如下:
隨後,在上述標籤的後面加上下述程式碼,讓非80埠的訪問跳轉到443埠
把域名的證照檔案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包所在目錄
設定預設首頁
由於我們修改了tomcat的預設訪問頁面,所有的根目錄訪問時不會走ROOT目錄下的頁面,此時就需要在專案裡配置一個根目錄的對映,讓其跳轉到我們指定的專案內的ststic中的頁面,程式碼如下:
// 預設首頁對映 @Controller public class DefaultController { @RequestMapping("/") public String Welcome(){ return "forward:index.html"; } }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2748885/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- spring boot 配置外接tomcatSpring BootTomcat
- SpringBoot-技術專區-用正確的姿勢如何用外接tomcat配置及執行(Tomcat優化分析)Spring BootTomcat優化
- SpringBoot專案在linux系統中的部署(直接部署、外接tomcat中部署)以及配置httpsSpring BootLinuxTomcatHTTP
- SpringBoot使用外部tomcatSpring BootTomcat
- Springboot整合外部Tomcat配置Spring BootTomcat
- 將springboot部署到tomcatSpring BootTomcat
- SpringBoot中配置外部TomcatSpring BootTomcat
- SpringBoot 之配置外部TomcatSpring BootTomcat
- SpringBoot整合Tomcat服務Spring BootTomcat
- SpringBoot實戰分析-Tomcat方式部署Spring BootTomcat
- springboot 專案部署到外部tomcatSpring BootTomcat
- springboot專案部署到tomcat容器Spring BootTomcat
- 配置springboot專案使用外部tomcatSpring BootTomcat
- SpringBoot配置外部Tomcat並支援JSPSpring BootTomcatJS
- [Web Server]Tomcat調優之SpringBoot內嵌Tomcat原始碼分析WebServerTomcatSpring Boot原始碼
- SpringBoot2.x系列教程(三十六)SpringBoot之Tomcat配置Spring BootTomcat
- SpringBoot配置外部Tomcat並打war包Spring BootTomcat
- Springboot內建tomcat配置HTTPS證書Spring BootTomcatHTTP
- springboot 整合外部tomcat war包部署方式Spring BootTomcat
- SpringBootApplication是如何啟動Tomcat的? | 破解SpringBoot Tomcat啟動之謎 !Spring BootAPPTomcat
- SpringBoot 使用外部Tomcat方法及啟動原理Spring BootTomcat
- Tomcat在SpringBoot中是如何啟動的TomcatSpring Boot
- SpringBoot專案如何打包部署到tomcat中去Spring BootTomcat
- 『中級篇』docker之java容器執行外接springboot-jar(番外篇)(79)DockerJavaSpring BootJAR
- 使用springboot建立web專案,並使用外部TomcatSpring BootWebTomcat
- SpringBoot 專案如何在tomcat容器中執行Spring BootTomcat
- SpringBoot原始碼學習4——SpringBoot內嵌Tomcat啟動流程原始碼分析Spring Boot原始碼Tomcat
- SpringBoot原始碼解析-內嵌Tomcat容器的啟動Spring Boot原始碼Tomcat
- springboot2.0使用外部tomcat進行啟動方法Spring BootTomcat
- SpringBoot手動部署到Tomcat和自動化熱部署Spring BootTomcat熱部署
- window系統下安裝openjdk,tomcat部署springboot war包JDKTomcatSpring Boot
- opencv外接矩形矯正OpenCV
- springboot使用外部tomcat啟動,整合jsp,另有整合dubbo樣例Spring BootTomcatJS
- 多個springboot專案部署到tomcat,Error deploying web application archiveSpring BootTomcatErrorWebAPPHive
- SpringBoot配置外部Tomcat專案啟動流程原始碼分析(長文)Spring BootTomcat原始碼
- 如何在SpringBoot/Tomcat的URL查詢字串中的支援括號?Spring BootTomcat字串
- SpringBoot部署到外部Tomcat無法註冊到Nacos服務端Spring BootTomcat服務端
- macbook 外接顯示器教程Mac