一步到位!若依框架升级 Tomcat 最新版完整教程

简介: 若依(RuoYi)框架升级 Tomcat 到最新版本的完整流程,我会从升级前提、核心步骤、版本适配、避坑指南四个维度拆解,覆盖单体版(RuoYi-Vue)和微服务版(RuoYi-Cloud),确保升级后系统稳定运行

 若依(RuoYi)框架升级 Tomcat 到最新版本的完整流程,我会从升级前提、核心步骤、版本适配、避坑指南四个维度拆解,覆盖单体版(RuoYi-Vue)和微服务版(RuoYi-Cloud),确保升级后系统稳定运行。

若依最新前后端分离源码下载:

https://gitee.com/ruoyieleadmin/ruoyi-ele-admin

一、升级前提(必看)

  1. 版本确认
  • 若依单体版:默认使用嵌入式 Tomcat(Spring Boot 内置),升级本质是升级 Spring Boot 依赖中的 Tomcat 版本;
  • 若依微服务版:网关 / 业务模块为嵌入式 Tomcat,若部署为外置 Tomcat,需同步升级外置包 + 项目依赖;
  • 最新 Tomcat 版本:截至 2026 年,稳定版为 Tomcat 10.1.x(注意:Tomcat 10+ 基于 Jakarta EE 9,与 Java EE 8 不兼容,若依框架(基于 Spring Boot)优先选 Tomcat 9.0.x 最新版(如 9.0.96),兼容性最佳)。
  1. 兼容性检查
  • JDK 版本:Tomcat 9 需 JDK 8+,Tomcat 10 需 JDK 11+;
  • Spring Boot 版本:若依默认 Spring Boot 2.x 适配 Tomcat 9,Spring Boot 3.x 适配 Tomcat 10;
  • 核心依赖:确保项目中无硬编码依赖旧版 Tomcat API(如 org.apache.tomcat.util 下的类)。

二、核心升级步骤(分场景)

场景 1:若依单体版(嵌入式 Tomcat,最常用)

嵌入式 Tomcat 升级只需修改 pom.xml 中 Tomcat 依赖版本,步骤如下:

1. 排除默认 Tomcat 依赖

pom.xml 中找到 Spring Boot Starter Web 依赖,排除内置 Tomcat:

xml

<!-- Spring Boot Web 核心依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 排除默认 Tomcat 依赖 -->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

image.gif

2. 引入指定版本 Tomcat 依赖

添加最新版 Tomcat 依赖(以 9.0.96 为例,兼容性最佳):

xml

<!-- 引入最新版嵌入式 Tomcat -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <!-- 指定 Tomcat 版本(Spring Boot 2.x 适配 9.x) -->
    <version>9.0.96</version>
</dependency>
<!-- 可选:若使用 Tomcat 连接池,同步升级 -->
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jdbc</artifactId>
    <version>9.0.96</version>
</dependency>

image.gif

3. 验证版本

启动项目,在日志中查看 Tomcat 版本:

plaintext

INFO  [main] org.apache.catalina.core.StandardService : Starting service [Tomcat]
INFO  [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.96]

image.gif

场景 2:若依微服务版(Gateway / 业务模块)

微服务版每个模块独立配置,需在网关(gateway)、系统模块(system)等所有 pom.xml 中执行以下操作:

  1. 排除各模块中 Spring Boot Starter Web/Starter Tomcat 的默认依赖;
  2. 统一引入最新版 Tomcat 依赖(如 9.0.96);
  3. 重启所有微服务,验证日志中的 Tomcat 版本。

场景 3:外置 Tomcat 部署(若依打包为 WAR 包)

若依项目打包为 WAR 包部署到外置 Tomcat,需同步升级:

1. 升级外置 Tomcat 包
  • 下载最新版 Tomcat(9.0.96):Tomcat 官网
  • 替换服务器上的 Tomcat 目录,复制原有配置(如 server.xmlcontext.xml、端口、数据源配置);
  • 确保 Tomcat 目录权限(如 bin 目录可执行)。
2. 项目依赖适配

pom.xml 中调整打包方式为 WAR,并适配外置 Tomcat:

xml

<!-- 打包方式改为 WAR -->
<packaging>war</packaging>
<!-- 排除嵌入式 Tomcat(仅运行时排除) -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope> <!-- 运行时由外置 Tomcat 提供 -->
</dependency>
<!-- 引入 Servlet API 依赖(适配外置 Tomcat) -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version> <!-- Tomcat 9 适配 4.0.x -->
    <scope>provided</scope>
</dependency>

image.gif

3. 调整启动类

在启动类中继承 SpringBootServletInitializer,适配外置 Tomcat 启动:

java

运行

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class RuoYiApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(RuoYiApplication.class);
    }
    public static void main(String[] args) {
        SpringApplication.run(RuoYiApplication.class, args);
    }
}

image.gif

三、关键配置适配(升级后必检查)

  1. 端口 / 连接器配置:若使用外置 Tomcat,检查 conf/server.xml 中的连接器配置,确保兼容新版:
    xml
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
           connectionTimeout="20000"
           redirectPort="8443"
           URIEncoding="UTF-8" /> <!-- 新版 Tomcat 保留该配置,无需修改 -->
  1. image.gif
  2. 字符编码配置:新版 Tomcat 默认编码为 UTF-8,若依框架已配置,无需额外调整;若出现乱码,在 conf/web.xml 中添加:
    xml
<filter>
    <filter-name>setCharacterEncoding</filter-name>
    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>ignore</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>setCharacterEncoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
  1. image.gif
  2. 数据源 / 连接池适配:若依使用 Druid 连接池,新版 Tomcat 无需调整 Druid 配置;若使用 Tomcat 连接池,同步升级 tomcat-jdbc 依赖版本。

四、避坑指南(生产环境必看)

  1. Tomcat 10 兼容性问题
  • Tomcat 10 将 javax.servlet 替换为 jakarta.servlet,若依框架(基于 Spring Boot 2.x)直接升级会报错,需:① 升级 Spring Boot 到 3.x(适配 Jakarta EE 9);② 替换所有 javax.servlet 依赖为 jakarta.servlet
  • 建议:生产环境优先使用 Tomcat 9.x 最新版,避免兼容性改造。
  1. 依赖冲突问题
  • 升级后若出现 ClassNotFoundException(如 org.apache.tomcat.util.buf.StringUtils),检查项目中是否有第三方依赖硬编码依赖旧版 Tomcat,需排除冲突依赖: xml
<dependency>
    <groupId>第三方依赖groupId</groupId>
    <artifactId>第三方依赖artifactId</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-util</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  • image.gif
  1. 启动失败问题
  • 若启动报错 Address already in use,检查 Tomcat 端口是否被占用(新版 Tomcat 无端口默认变更,只需确保端口未被占用);
  • 若报错 Permission denied,检查 Tomcat 目录 / 日志目录的读写权限。
  1. 性能适配
  • 新版 Tomcat 优化了 NIO 性能,可调整连接器线程池配置,提升并发: xml
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="500" minSpareThreads="100"
           connectionTimeout="20000"
           redirectPort="8443" />
  • image.gif

五、验证升级成功

  1. 启动验证:项目正常启动,无 Tomcat 相关报错;
  2. 功能验证:访问若依后台管理系统,测试登录、菜单、接口调用等核心功能;
  3. 版本验证
  • 嵌入式 Tomcat:查看启动日志中的 Tomcat 版本;
  • 外置 Tomcat:访问 http://ip:port/manager/html(需配置 Tomcat 管理账号),查看版本信息。

总结

若依框架升级 Tomcat 的核心逻辑:

  1. 嵌入式 Tomcat:仅需修改 pom.xml 排除默认依赖 + 引入新版依赖,适配成本最低;
  2. 外置 Tomcat:同步升级 Tomcat 包 + 项目 WAR 包依赖 + 启动类适配;
  3. 避坑重点:优先选 Tomcat 9.x 最新版(兼容 Spring Boot 2.x),避免 Tomcat 10 的兼容性改造;
  4. 验证关键:启动无报错、核心功能正常、版本日志匹配。
若依最新前后端分离源码下载:

https://gitee.com/ruoyieleadmin/ruoyi-ele-admin

相关文章
|
20天前
|
缓存 NoSQL Java
若依(RuoYi)框架性能核心:Redis 作用与场景全解析
若依(RuoYi)框架中 Redis 的核心作用、具体应用场景和关键配置逻辑,我会从核心作用分类、实战应用场景、关键配置、优化建议四个维度拆解,覆盖单体版和微服务版的通用逻辑,让你清楚 Redis 在若依中 “做什么、怎么做、怎么优化”
259 3
|
20天前
|
安全 JavaScript Java
若依后台权限核心:Spring Security 认证授权详解
若依(RuoYi)框架整合 Spring Security 的具体实现方式,我会从核心原理、整合步骤、关键配置、实战示例四个维度,结合若依前后端分离版(Spring Boot + Vue)的特点,给出可直接落地的整合方案,帮你理解若依是如何基于 Spring Security 实现权限管控
114 4
|
20天前
|
SQL 监控 druid
若依(RuoYi)框架 Druid 配置详解
核心说明:Druid 是阿里巴巴开源的高性能数据库连接池,兼具连接池管理、SQL监控、防SQL注入、日志记录等核心功能,若依(RuoYi)框架(含RuoYi-Vue、RuoYi-Cloud)已默认集成 Druid,核心配置集中在 application-druid.yml 文件,同时需配合 application.yml 进行环境关联,以下是完整配置解析、实操步骤及常见问题,适配若依框架全版本,兼顾入门使用与进阶优化。
465 4
|
1月前
|
弹性计算 安全 应用服务中间件
阿里云服务器如何部署安装LNMP程序环境?超简单,看完就能上手!
本文详解阿里云ECS部署LNMP环境的两种方式:一是通过系统运维管理控制台“一键安装”扩展程序,快速完成部署;二是手动安装Linux+Nginx+MySQL+PHP,支持Alibaba Cloud Linux/CentOS/Ubuntu,满足WordPress等对配置与安全的定制化需求。含完整步骤、命令及验证方法。
|
1月前
|
人工智能 运维 自然语言处理
阿里云OpenClaw/Clawdbot企业级部署指南:6大核心技能+安全运维,打造全天候AI助理
在2026年AI Agent赛道中,OpenClaw(原Clawdbot/Moltbot)凭借“能落地执行”的核心优势脱颖而出——它并非简单的聊天机器人,而是可通过自然语言指令完成脚本编写、跨平台操作、文件处理的全能数字助理。阿里云针对零基础用户打造的一键部署方案,将复杂环境配置简化为20分钟流程,搭配ClawHub精选的7个核心技能,能让OpenClaw从基础对话工具升级为处理真实工作场景的智能助理,真正实现“雇佣一个不知疲倦的AI员工”。
496 25
|
20天前
|
安全 Java API
将若依(RuoYi)框架从适配 Spring Boot 2 的版本升级到 Spring Boot 3
将若依(RuoYi)框架从适配 Spring Boot 2 的版本升级到 Spring Boot 3,这是一个涉及依赖、配置、API 兼容等多方面的系统性升级工作。
256 5
|
19天前
|
人工智能 新能源 数据挖掘
AI赋能与迭代博弈——浅析AI发展对新技术的冲击
人工智能(AI)作为引领新一轮科技革命的核心力量,其快速发展不仅重塑了现有技术体系,更对各类新技术的研发、落地与迭代产生了全方位冲击。这种冲击呈现双向特征:一方面,AI为新技术突破瓶颈、加速落地提供了强大支撑;另一方面,AI的主导性优势也可能挤压其他新技术的发展空间,引发技术同质化、创新动力弱化等问题。本文结合技术发展实际,剖析AI对新技术的多重冲击,探讨如何实现AI与各类新技术协同发展、共生共赢。
111 39
|
5天前
|
人工智能 程序员 API
阿里云百炼Coding Plan购买地址,套餐额度选择以及详细使用方法教程
阿里云百炼Coding Plan提供Lite(40元/月,1.8万次/月)与Pro(200元/月,9万次/月)两种套餐,支持qwen3.5-plus、kimi-k2.5等多模型及图片理解。通过VS Code等插件接入,按月固定付费、无额外计费,性价比高,适合个人开发者与专业程序员。
|
1月前
|
JSON API 数据库
超越上下文窗口:CodeAct与RLM,两种代码驱动的LLM扩展方案
本文介绍CodeAct与RLM两大前沿范式:CodeAct让模型用可执行代码调用工具,缓解Context Rot,提升多工具任务成功率;RLM则通过递归分解超长上下文,将推理转化为编程式搜索。二者分别重构“动作空间”与“推理结构”,共同推动LLM从黑箱生成器迈向可编程智能体。
365 11
超越上下文窗口:CodeAct与RLM,两种代码驱动的LLM扩展方案

热门文章

最新文章