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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 10:10:55