您好,登录后才能下订单哦!
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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。