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

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

作者头像
程序员爱酸奶
发布于 2020-07-23 12:11:18
发布于 2020-07-23 12:11:18
1.6K00
代码可运行
举报
文章被收录于专栏:程序员爱酸奶程序员爱酸奶
运行总次数:0
代码可运行

喜欢就关注我们吧!

前言

事情的缘由是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
代码运行次数:0
运行
AI代码解释
复制
<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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spring Boot为什么不需要额外安装Tomcat?
打开上一节我们搭建好的 tobebetterjavaer 项目,找到 pom.xml 文件,可以在里面看到一个 parent 属性,代码如下:
沉默王二
2022/01/21
1.2K0
Spring Boot为什么不需要额外安装Tomcat?
SpringBoot之parent、starter、引导类、内嵌tomcat
把所有的技术(jar)使用的固定搭配格式都给开发出来,以后你用某个技术,就不用一次写一堆依赖了
冬天vs不冷
2025/01/21
1730
SpringBoot替换web容器tomcat为undertow
1、如果是gradle工程,有两种方式;方式一、在全局配置中修改;添加excludeexclude module:'spring-boot-starter-tomcat'图片方式二、在compile排除: compile("org.springframework.boot:spring-boot-starter-web:${springBootVersion}") { exclude group: 'org.springframework.boot', module: 'spring-
JQ实验室
2022/06/22
1.1K0
嵌入式 Tomcat AJP 协议对 SpringBoot 应用的影响
2020 年 1 月 6 日,国家信息安全漏洞共享平台(CNVD)收录了由北京长亭科技有限公司发现并报送的 Apache Tomcat 文件包含漏洞。Tomcat AJP 协议由于存在实现缺陷导致相关参数可控,攻击者利用该漏洞可通过构造特定参数,读取服务器 webapp 下的任意文件。若服务器端同时存在文件上传功能,攻击者可进一步实现远程代码的执行。
猿芯
2020/07/07
1K0
Spring Boot辅助功能之内嵌服务器【Tom Cat】
首先我们来看看内嵌的TomCat在哪里?我们先打开spring Boot的pom.xml文件。
叫我阿杰好了
2022/11/07
1.2K0
Spring Boot辅助功能之内嵌服务器【Tom Cat】
Apache Tomcat文件包含漏洞紧急修复
Tomcat 漏洞 tomcat有漏洞, 需要升级到9.0.31 https://cert.360.cn/warning/detail?id=849be16c6d2dd909ff56eee7e26ae
Ryan-Miao
2020/02/25
1.5K0
ubuntu 18.04 server下tomcat部署sprongboot项目
如果要将最终的打包形式改为war的话,还需要对pom.xml文件进行修改,因为spring-boot-starter-web中包含内嵌的tomcat容器,所以直接部署在外部容器会冲突报错。这里有两种方法可以解决,如下
吟风者
2019/07/24
1.1K0
JeecgBoot集成宝兰德AppServer部署方案
路径:jeecg-boot-base/jeecg-boot-base-core/org.jeecg.config.WebSocketConfig
JEECG
2024/02/19
4790
Spring Native实战(畅快体验79毫秒启动springboot应用)
个人的理解:Spring Native是Spring提供的、制作native image的技术方案,涉及到以下关键技术:
程序员欣宸
2021/11/04
4.1K0
Spring Native实战(畅快体验79毫秒启动springboot应用)
SpringBoot打成war包在tomcat或wildfly下运行
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
程序新视界
2019/11/15
2K0
框架 | SpringBoot项目发布部署外部tomcat服务器步骤
如何发布Sping Boot项目? 新建好SpringBoot项目之后,SIT测试如果没问题,则下一步肯定要进行UAT测试。 那么如何将SpringBoot项目进行发布部署,这和我们之前的普通web项目不太一样,之前的项目直接部署到tomcat的webapps中,然后启动tomcat即可访问。 但是SpringBoot项目内嵌tomcat,这如何发布部署访问呢? 目前比较常用的方式有三种:发布JAR包、发布WAR包、部署到自动化容器中,以下具体讲解发布部署过程。 1 技术选型 JDK1.7、MYSQL57、
码神联盟
2018/06/04
3.1K0
SpringBoot应用部署于外置Tomcat容器
来源:https://my.oschina.net/hansonwang99/blog/1824245
程序猿DD
2018/07/31
9290
SpringBoot应用部署于外置Tomcat容器
Tomcat爆出安全漏洞!Spring Cloud/Boot框架多个版本受影响
导语:近期Apache Tomcat爆出 HTTP/2 拒绝服务漏洞,Spring Cloud/Boot框架的多个版本均已中招。本文整理了受影响的框架版本列表,并列出升级方案,帮助大家避免受到该漏洞的影响。
腾讯云中间件团队
2021/03/24
2.2K0
Tomcat爆出安全漏洞!Spring Cloud/Boot框架多个版本受影响
JeecgBoot升级Nacos至 2.2.3 版本解决raft漏洞问题
Nacos是一个易于使用的动态服务发现、配置和服务管理平台,用于构建云原生应用程序。
JEECG
2023/07/17
5770
springboot2.x纯注解整合dubbo
springboot1.x和springboot2.x整合差距挺大的,基于最新的2.x进行整合,使用纯注解的方式
陈灬大灬海
2019/07/15
1.9K0
springboot2.x纯注解整合dubbo
Spring项目中Tomcat修改为Jetty
码客说
2023/08/10
4970
springBoot定制内嵌的Tomcat
此篇仅介绍配置方式,详细配置内容百度查阅 工程结构: 可以通过配置的方式设置参数,如下 application.properties #配置tomcat端口 # server.port= 8888 #
HUC思梦
2020/09/03
9570
springBoot定制内嵌的Tomcat
springBoot学习(五)springBoot自定义banner与web开发
通过 springBootTestRun.setBannerMode(Banner.Mode.OFF);
杨小杰
2019/07/04
7470
springBoot学习(五)springBoot自定义banner与web开发
【说站】SpringBoot超详细深入讲解底层原理
首先建一个maven项目rick-spring-boot,并创建两个子项目分别是spring-boot和user,其中spring-boot项目就是模拟手写一个简单springboot,user就是用来测试手写的spring-boot的。
很酷的站长
2022/11/24
4560
【说站】SpringBoot超详细深入讲解底层原理
Springsecurity搭建自定义登录页面
WebSecurityConfigurerAdapter是security中浏览器登录设置的主类 这里我们继承后重写以下的三个方法:
Dream城堡
2018/09/10
6310
Springsecurity搭建自定义登录页面
相关推荐
Spring Boot为什么不需要额外安装Tomcat?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验