您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關SpringBoot在怎么外置Tomcat,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
配置包管理文件
打開項目根目錄的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年,所以不推薦使用這個方法。
websocket相關
既然使用了外置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目錄下了。
tomcat配置
我的項目啟用了https,使用外置tomcat后,在application.yml中配置的https就失效了,我們需要在tomcat中重新配一下。
開啟https訪問
我們打開tomcat的conf目錄下的server.xml,找到name為Catalina的Service標簽里的
隨后,在上述標簽的后面加上下述代碼,讓非80端口的訪問跳轉到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 path="" docBase=""></Context>
path: 留空則表示為域名根目錄,docBase為你的war包所在目錄
設置默認首頁
由于我們修改了tomcat的默認訪問頁面,所有的根目錄訪問時不會走ROOT目錄下的頁面,此時就需要在項目里配置一個根目錄的映射,讓其跳轉到我們指定的項目內的ststic中的頁面,代碼如下:
// 默認首頁映射 @Controller public class DefaultController { @RequestMapping("/") public String Welcome(){ return "forward:index.html"; } }
關于SpringBoot在怎么外置Tomcat就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。