我正在使用 jersey 2.0 创建 RESTful Web 服务,这是我的 web.xml 文件:
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>Rest</servlet-name>
<servlet-class>
com.shop.domain.ShoppingApplication
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Rest</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
我的 ShoppingApplication 类:
public class ShoppingApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> s = new HashSet<Class<?>>();
s.add(CustomerResource.class);
return s;
}
}
还有我的 CustomerResource 类:
@Path("/customers")
public class CustomerResource{
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getCustomer(){
return "Hello";
}
}
当使用 localhost:8080/customers 运行时,我得到了 404 未找到页面,我应该如何修复它。
最佳答案
在非 JEE6 容器内使用 JAX-RS 需要您提供要在 web.xml 中映射的 JAX-RS Servlet(如 Jersey)
将您的 web.xml 更改为
<web-app>
<servlet>
<servlet-name>MyApplication</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.shop.domain.ShoppingApplication</param-value>
</init-param>
</servlet>
...
<servlet-mapping>
<servlet-name>MyApplication</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
...
</web-app>
参见https://jersey.java.net/documentation/latest/deployment.html#deployment.servlet.2对于文档。
关于Java RESTful Web 服务,404 未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26443547/