You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot REST API部署到外部Tomcat后提示请求URL无法获取错误

Spring Boot 部署外部Tomcat接口404排查方案
  • 检查访问路径的上下文前缀
    本地Spring Boot内置Tomcat默认使用根路径(/)访问接口,外部Tomcat部署war包时,默认上下文路径为war包的文件名。例如你的war包名为my-api.war,原本地访问路径http://localhost:8080/user/list,部署后需要改为http://{服务器IP}:{Tomcat端口}/my-api/user/list。如果需要使用根路径访问,可将war包重命名为ROOT.war后再部署。
  • 检查启动类适配配置
    部署到外部Tomcat需要修改启动类,继承SpringBootServletInitializer并重写configure方法,示例配置如下:
    @SpringBootApplication
    public class MyApiApplication extends SpringBootServletInitializer {
        public static void main(String[] args) {
            SpringApplication.run(MyApiApplication.class, args);
        }
        // 新增此方法适配外部Tomcat
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            return builder.sources(MyApiApplication.class);
        }
    }
    
  • 检查打包依赖配置
    1. pom.xml中要指定打包格式为war:<packaging>war</packaging>
    2. 将内置Tomcat依赖的scope设为provided,避免依赖冲突:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    
  • 修正Tomcat版本选择问题
    你使用的Java 8对应的Spring Boot版本为2.x系列,仅支持基于javax.servlet的Tomcat 8.5/9版本,Tomcat 10及以上版本使用jakarta.servlet包,与Spring Boot 2.x完全不兼容,直接回退到Tomcat 8.5或9即可,不需要尝试更高版本。
  • 检查Tomcat启动日志
    查看Tomcat目录下logs/catalina.out日志,确认应用启动过程中是否有报错:
    • 如果没有Spring Boot的启动日志,说明war包未被正常识别加载
    • 如果有数据源连接等报错,说明Oracle连接配置有误导致应用启动失败,接口自然无法访问
  • 核对服务器访问配置
    确认Tomcat端口未被占用、防火墙已放行对应端口,服务器IP可正常访问,Tomcat默认端口是8080,如果你在conf/server.xml中修改了端口,需要对应修改访问地址的端口。

内容的提问来源于stack exchange,提问作者PKS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:45:02