REST Web服务返回HTTP 404异常,如何解决该问题?
解决JAX-RS Web服务的HTTP 404异常问题
我来帮你一步步排查这个404问题,这是JAX-RS新手常遇到的几个典型场景:
1. 先纠正访问路径错误
你当前访问的是 /Restful_WebServices_Tuts/test/home,但你的接口类 HelloRS 上标注的@Path是/hello,正确的访问URL需要遵循这个结构:[应用上下文路径] + @ApplicationPath值 + @Path值
也就是:http://<你的主机>:<端口>/Restful_WebServices_Tuts/test/hello
先试试访问这个路径,大概率能直接解决问题。
2. 确保JAX-RS资源类被容器扫描到
Tomcat 8是Servlet 3.1容器,虽然支持注解驱动的JAX-RS部署,但有时候会出现资源类扫描不到的情况,你可以通过两种方式解决:
方式一:显式注册资源类
修改你的JAX_RS_Starter类,重写getClasses()方法,把HelloRS类手动注册进去:
import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; import java.util.HashSet; import java.util.Set; @ApplicationPath("/test") public class JAX_RS_Starter extends Application{ @Override public Set<Class<?>> getClasses() { Set<Class<?>> classes = new HashSet<>(); classes.add(HelloRS.class); return classes; } }
方式二:配置JAX-RS实现的Servlet(以Jersey为例)
如果使用Jersey作为JAX-RS实现,你可以在web.xml中添加Servlet配置,确保容器能正确扫描到你的资源类:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <display-name>Restful WebServices Tuts</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <!-- 添加Jersey Servlet配置 --> <servlet> <servlet-name>Jersey REST Service</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>你的资源类所在包名,比如com.yourpackage.rest</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey REST Service</servlet-name> <url-pattern>/test/*</url-pattern> </servlet-mapping> </web-app>
注意替换param-value中的内容为你HelloRS类实际所在的包名。
3. 检查依赖是否完整
Tomcat本身不自带JAX-RS的实现,所以你需要确保项目中包含了JAX-RS实现的依赖(比如Jersey或RESTEasy)。如果是Maven项目,添加Jersey的核心依赖:
<dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet</artifactId> <version>2.39.1</version> <!-- 选择合适的稳定版本 --> </dependency>
4. 确认应用已正确部署
最后检查你的应用是否成功部署到Tomcat:
- 查看Tomcat的
webapps目录下是否存在Restful_WebServices_Tuts文件夹 - 登录Tomcat管理控制台(默认路径
/manager/html),确认你的应用状态为running
内容的提问来源于stack exchange,提问作者Satish Rongala
相关产品推荐
相关产品推荐

