我正在学习用 Jersey 实现宁静的网络服务。我总是收到“POST
http://localhost:8080/rest/welcome/post
返回了 404 Not Found 的响应状态” - 我的代码有什么问题?服务器端的上下文根是 rest,我在类级别有 @Path 欢迎,在方法级别有 @pPath post。
客户
public class WelcomeRestJsonClient {
@Produces("application/json")
@Consumes("text/plain")
public void send() {
MyObject myObject = new MyObject();
ClientConfig clientConfig = new DefaultClientConfig();
clientConfig.getClasses().add(com.restclient.MyJsonProvider.class);
Client client = Client.create(clientConfig);
WebResource webResource = client.resource("http://localhost:8080/rest/welcome/post");
ClientResponse response = webResource.type(MediaType.APPLICATION_JSON).post(ClientResponse.class, myObject);
System.out.println("success");
}
}
服务器
@Path("/welcome")
public class WelcomeRestJson {
@POST
@Path("/post")
@Produces("text/plain")
@Consumes("application/json")
public String processPostData(MyObject myObject) {
System.out.println("Inside processPostData");
return "success";
}
}
我是否因为不正确的 JsonProvider 配置而面临这个问题?在客户端,我使用 MyJsonProvider 扩展 JacksonJaxbJsonProvider 将 MyObject 转换为 Json。我在服务器端的代码只接受 MyObject。我是否也需要一些代码来连接服务器端的 Json 提供程序?
这是我的 web.xml
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.rest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
我可以访问rest index.html。我在日志文件中看到以下内容。信息:找到根资源类:com.rest.WelcomeRestJson 类我删除了路径中的“/”。还是一样的404错误。请帮忙。