前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >太简单,springboo 使用自定义的 Tomcat

太简单,springboo 使用自定义的 Tomcat

作者头像
程序员爱酸奶
发布2020-07-23 20:11:18
1.3K0
发布2020-07-23 20:11:18
举报
文章被收录于专栏:程序员爱酸奶

喜欢就关注我们吧!

前言

事情的缘由是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 文件中做如下修改

代码语言:javascript
复制
<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>

可以达到一样的效果。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员爱酸奶 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 解决
  • 反思
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档