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); } } - 检查打包依赖配置
- pom.xml中要指定打包格式为war:
<packaging>war</packaging> - 将内置Tomcat依赖的scope设为
provided,避免依赖冲突:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> - pom.xml中要指定打包格式为war:
- 修正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
相关产品推荐
相关产品推荐

