spring-boot-starter-tomcat,升级springboot tomcat版本
00-1010如何升级Spring Boot 1的嵌入式tomcat版本?后台修复方案如下:2。流程2.1单模块项目升级tomcat版本2.2多模块升级项目3。如何用打包的子模块升级项目的结尾?
目录
00-1010根据信息安全运营团队发布的Tomcat-AJP协议漏洞风险预警,Tomcat的AJP协议(默认端口为8009)存在高危漏洞,相关参数因实现缺陷可被控制。攻击者可以通过构造特定参数,利用此漏洞读取server webapp下的任何文件。如果服务器端同时存在文件上传功能,攻击者可以进一步实现远程代码执行。该漏洞CVE号为:CVE-2020-1938,该漏洞的风险等级为高。附全行开发生产所涉及的系统。请尽快确认是否使用AJP协议,并根据临时计划进行修复。
00-1010 1.不使用AJP协议方案:直接关闭AJP协议。
(1)编辑CATALINA_BASE/conf/server.xml,找到下面一行(CATALINA_BASE是Tomcat的工作目录):
连接器端口="8009 "协议="AJP/1.3 "重定向端口="8443" /
(2)注释掉这一行(或删除它):
!—连接器端口="8009 "协议="AJP/1.3 "重定向端口="8443" /—
(3)保存后需要重启,规则才能生效。
(4)重启后,执行netstat -angrep 8009检查端口8009不再处于监听状态。
2.使用AJP协议:建议立即将Tomcat升级到9.0.31、8.5.51或7.0.100版本进行修复。
虽然我们的产品使用嵌入式tomcat,但是我们只使用http协议,不使用AJP协议,而且AJP协议已经关闭。但鉴于客户的安全意识较高,对此并不认同,强烈要求升级tomcat版本。于是开始踩升级tomcat的坑。
Spring Boot之如何升级内嵌tomcat版本
00-1010写了一个demo测试嵌入式tomcat版本,很容易升级。在pom文件中写tomcat想要升级的版本,打包,依赖tomcat的相应版本。
properties Tomcat . version 8 . 5 . 51/Tomcat . version/properties但是这个升级要求pom中的父项目是org.springframework.boot,类似于面向对象中继承父类,重写父类的对应方法。你明白这个意思吗?也就是说pom中有以下类似的标签,否则直接写tomcat版本升级不会增加效率。
parentgroupidorg . spring framework . boot/groupid artifactidspring-boot-starter-parent/artifactidversion 2 . 0 . 8 . release/version/parent
00-1010升级tomcat版本的多模块项目。子模块依赖于tomcat,但是子模块的父项目不能是org.springframework.boot,而是项目对应的父模块。这时候第一种方法就不行了。让我们粗鲁一点。我们先去掉对tomcat的依赖,然后引入相应版本的tomcat。因为tomcat相关的依赖项在spring-boot-starter-web dependency模块下,所以先去掉其中包含的tomcat依赖项,然后引入相应的tomcat版本,如下:
附属groupIdorg.springframework.boot/groupId l
t;artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> <exclusion> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> </exclusion> <exclusion> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-el</artifactId> </exclusion> <exclusion> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-websocket</artifactId> </exclusion> <exclusion> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-annotations-api</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>${tomcat.version}</version> <exclusions> <exclusion> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-annotations-api</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-annotations-api</artifactId> <version>${tomcat.version}</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-el</artifactId> <version>${tomcat.version}</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-websocket</artifactId> <version>${tomcat.version}</version> <exclusions> <exclusion> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> </exclusion> </exclusions> </dependency>
3. 项目有打包子模块如何升级
如果有自己打包子模块,上述就会失效,具体原因还不清楚,但是也很好解决:将如上2步骤的依赖复制黏贴到打包子模块的pom文件里,这样就搞定。
尾声
现在总结起来还是比较简单,但是前一段时间踩坑也是很脑壳疼的。一直升级不生效,只能各种尝试,总算赶在项目发布前解决了,cheers !
以上就是Spring Boot之内嵌tomcat版本升级操作示例的详细内容,更多关于Spring Boot内嵌tomcat版本升级的资料请关注盛行IT其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。