您好,登錄后才能下訂單哦!
springboot怎樣使用自定義的Tomcat,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
事情的緣由是tomcat d的漏洞引起的,需要升級Tomcat。
然后項目是springboot, 然后使用自帶的tomcat.我使用的是springboot2.1.6.我看了一下,2.1.6版本自動依賴的Tomcat版本是9.0.21。剛好在這個漏洞范圍之內。臥槽,第一反應就是要升級,最開始想到了兩個解決方案。
一、升級springboot版本,我查了一下,最新的springboot 2.2.3 依賴的Tomcat版本是9.0.30 ,那豈不是springboot 版本要升級到最新,一想不對勁啊,升到最新版本會不會引起其他什么問題,然后我升級到2.2.3打包沒問題,啟動就報錯了,發現項目依賴的公司框架不支持最新的版本,這樣想,如果要修復漏洞,就要升級框架,成本還是有點高的,所以想了第二個方案。
二、屏蔽自帶了Tomcat,部署到外置Tomcat 上運行,但是這樣需要打成war ,并且項目中的一堆配置文件都是放在配置中心的 ,怎么都去加載也是問題。并且改動量很大也。
后來在第二種的基礎上,改進了一下。既然可以屏蔽到自帶的tomcat ,那我們再進一步,引入沒有漏洞的tomcat 包是不是就可以了。
基于上面的思考,我找到了pom.xml 文件,parent中點擊進去,找到spring-boot-dependencies 點進去,再找到tomcat 依賴的版本,可以看到原來是9.0.21.我們手動改成9.0.30 。然后我們pom.xml maven-Reimport。最后重啟項目。啟動發現,引用的Tomcat已經是我們最新的9.0.30啦。
那怎么升級呢?如果lib 文件和項目沒有分開,直接全量替換就可以了。如果是依賴包和運行包分開,如果僅僅替換下面這四個jar 包啟動是會報錯的。所以建議還是替換整個lib 文件夾
其實也可以在pom.xml 文件中做如下修改
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions> <!-- 去掉默認配置 -->
<!-- 移除嵌入式tomcat插件 -->
<!--<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>-->
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>9.0.30</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
<version>9.0.30</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<version>9.0.30</version>
</dependency>
可以達到一樣的效果。
看完上述內容,你們掌握springboot怎樣使用自定義的Tomcat的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。