写点什么

springboo 使用自定义的 Tomcat,java 常用的设计模式面试

用户头像
极客good
关注
发布于: 刚刚

=================================================================


事情的缘由是 tomcat d 的漏洞引起的,需要升级 Tomcat。


![在这里插入图片描述](https://img-blog.csdnimg.cn/2020


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


0119145518415.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9xdWVsbGFuYW4uYmxvZy5jc2RuLm5ldA==,size_16,color_FFFFFF,t_70)


然后项目是 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>


用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
springboo 使用自定义的 Tomcat,java常用的设计模式面试