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

Java Web应用创建自定义ping接口访问返回404,该如何正确配置?

问题排查与解决方案

核心问题根因

你遇到的404错误由两个常见配置错误共同导致:

  1. 请求方法不匹配:调用代码使用HEAD请求访问接口,但接口仅声明了@GET注解,JAX-RS默认不会自动适配GET实现处理HEAD请求,方法不匹配会返回404/405状态码
  2. 路径拼接错误:@ApplicationPath("testApp")是JAX-RS接口的根路径,该路径会叠加在Web应用的上下文路径(Context Path)之后。如果你的应用部署后默认上下文路径为/testApp(比如war包名为testApp.war),那你当前使用的http://localhost:8080/testApp/ping少了一层JAX-RS根路径,实际有效路径应为http://localhost:8080/testApp/testApp/ping

修复步骤

你可以根据自己的业务需求选择以下任意一种组合配置:

1. 修复请求方法不匹配问题,二选一即可:

  • 修改调用代码的请求方法,将HEAD改为GET:
// 原代码
connection.setRequestMethod("HEAD");
// 修改后
connection.setRequestMethod("GET");
  • 给Ping接口增加HEAD方法支持,无需修改调用代码:
@Path("ping")
@RequestScoped
public class PingResource {
  private static final Ping PING = new Ping("transactions");
  // 新增@HEAD注解,同时支持GET和HEAD请求
  @HEAD
  @GET
  @Produces({APPLICATION_XML, APPLICATION_JSON})
  public Ping ping() {
    return PING;
  }
}

2. 修复路径问题,二选一即可:

  • 调整调用代码的访问URL,补全路径层级:
// 原URL
public static String URL = "http://localhost:8080/testApp/ping";
// 修改后(如果Web应用上下文为/testApp)
public static String URL = "http://localhost:8080/testApp/testApp/ping";
  • 调整JAX-RS根路径配置,去掉多余的层级:
// 原配置
@javax.ws.rs.ApplicationPath("testApp")
// 修改后,JAX-RS根路径直接对应Web应用根路径
@javax.ws.rs.ApplicationPath("/")

修改后原来的http://localhost:8080/testApp/ping即可正常访问。


验证建议

配置修改完成后,先直接在浏览器中访问ping接口地址,确认可以正常返回JSON/XML格式的ping结果后,再运行调用代码验证,避免来回部署排查的麻烦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:48:02