Spring Boot WAR部署WildFly 26后REST接口404问题求助
排查Spring Boot WAR包部署WildFly后REST接口404问题
1. 检查Spring Boot的Servlet初始化配置
Spring Boot打包WAR包时必须继承SpringBootServletInitializer并重写configure方法,确保WildFly能正确初始化Spring Web上下文:
public class ReportPlannerApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(ReportPlannerApplication.class); } public static void main(String[] args) { SpringApplication.run(ReportPlannerApplication.class, args); } }
若缺少该配置,WildFly仅会加载静态资源,不会触发Spring的接口映射逻辑。
2. 确认接口访问路径的正确性
从静态资源访问路径http://moon:28080/reportplanner/index.html可知,应用的上下文路径为reportplanner,因此REST接口的完整访问路径应为http://moon:28080/reportplanner/api/task/all,检查是否遗漏或错误拼接了上下文路径。
3. 验证组件扫描与Spring MVC配置
- 确保
@SpringBootApplication注解所在类的包是控制器类的父包,或显式通过@ComponentScan指定扫描范围:
@SpringBootApplication(scanBasePackages = "com.your.package") public class ReportPlannerApplication { ... }
- 检查自定义
WebMvcConfigurer实现,确认未通过addResourceHandlers或其他配置覆盖默认的API路径映射规则。
4. 排查依赖冲突与类加载问题
Spring Boot 3.4.0依赖Servlet 6.0规范,而WildFly 26.1.6.Final默认提供Servlet 5.0,需在pom.xml中排除Spring Boot自带的Servlet API依赖,改用WildFly内置版本:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> </exclusion> </exclusions> </dependency>
同时查看WildFly的server.log,确认是否存在类加载冲突或Spring上下文初始化失败的日志。
5. 检查WAR包结构与部署状态
- 解压WAR包,确认
WEB-INF/classes下包含编译后的控制器类和Spring配置类,WEB-INF/lib下的Spring核心依赖完整无缺失。 - 通过WildFly管理控制台(默认
http://localhost:9990)查看应用部署状态,确保WAR包处于ENABLED状态,无部署异常。
内容的提问来源于stack exchange,提问作者Salvatore Montagna
相关产品推荐
相关产品推荐

