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

Tomcat 6 + Jersey 2.6部署REST应用出现404错误求助

解决Tomcat 6 + Jersey 2.6 REST服务的404错误

咱们一步步来排查你遇到的问题:

1. 核心问题:访问路径不匹配

你当前访问的是 http://appurl:8080/ddd/rest,但你的REST服务并没有定义这个根路径对应的资源。看你的Service类配置:

  • 类级别标注了@Path("/SalvaVotazioni")
  • 方法级别又添加了@Path("/salva")

所以正确的访问路径应该是:
http://appurl:8080/ddd/rest/SalvaVotazioni/salva

另外,你的方法使用了@PathParam("codiceEnte"),但当前的@Path("/salva")没有对应的路径占位符,参数根本无法获取到,需要修改方法的@Path注解:

@GET
@Path("/salva/{codiceEnte}") // 添加路径占位符
@Produces(MediaType.APPLICATION_XML)
public Response save(@PathParam("codiceEnte") String codiceEnte) {
    return Response.status(200).entity("收到的codiceEnte:" + codiceEnte).build();
}

此时访问需要带上参数值,比如:http://appurl:8080/ddd/rest/SalvaVotazioni/salva/123(123替换为你的实际参数内容)

2. 包扫描配置验证

你的web.xml中配置的扫描包是it.eng.ddd.webservice,而Service类所在的it.eng.ddd.webservice.salvaVotazioni是其子包——Jersey 2.x的jersey.config.server.provider.packages参数默认会递归扫描子包,所以这个配置是有效的。不过可以额外确认两点:

  • 编译后的Service.class文件是否正确放置在WEB-INF/classes目录下
  • @Path注解的拼写是否正确(Jersey的路径区分大小写)

3. 日志信息的线索

从你提供的Tomcat日志可以看到,LoggingFilter已经正常接收到请求,说明Jersey的ServletContainer已经成功加载,Servlet映射没有问题。返回404纯粹是因为请求路径没有匹配到任何资源方法,这也进一步印证了路径不匹配的核心问题。

4. 额外检查点

  • 版本兼容性:Tomcat 6是Servlet 2.5容器,Jersey 2.6支持Servlet 2.5及以上版本,两者兼容性没问题
  • 依赖完整性:确认WEB-INF/lib下的Jersey核心依赖包齐全,比如jersey-container-servlet-core、jersey-server等,缺少核心包可能导致资源扫描失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:53:47