0

我有以下服务..

@Path("/persistence")
public interface Persistence {

  @GET
  @Produces("application/json")
  @Path("/projects/{pid}/items")
  public Response getItems(@PathParam("pid") String projectId);

  @POST
  @Produces("application/json")
  @Consumes("application/json")
  @Path("/items")
  public Response addItems(String payload);

  @GET
  @Produces("application/json")
  @Path("/items/{itemId}")
  public Response getItem(@PathParam("itemId") String itemId);

  @PUT
  @Consumes("application/json")
  @Path("/items/{itemId}")
  public Response updateItem(@PathParam("itemId") String itemId,String payload);

  @DELETE
  @Consumes("application/json")
  @Path("/items/{itemId}")
  public Response deleteItem(@PathParam("itemId") String itemId);

}

我在tomcat上部署了这个服务,一切都很好。服务被部署,没有任何错误。之后,当我尝试测试它时,只有 POST 可以工作,而其他所有资源都会导致 404 not found 错误。我正在使用 REST 控制台来测试服务。当我这样做的时候

http://localhost:8081/serv?_wadl

我只看到列出的 POST 端点,并且列表中没有显示任何 GET、PUT 或 DELETE 资源。我错过了什么?

4

1 回答 1

1

该服务被声明为interface.

实现这个接口的类在哪里?

使用 JAX-RS 时有一些关于“注解继承”的规则。

JAX-RS 1.1 - 3.6 注解继承:

JAX-RS 注释可以用于超类或已实现接口的方法和方法参数。此类注释由相应的子类或实现类方法继承,前提是该方法及其参数没有任何自己的 JAX-RS 注释。超类上的注解优先于已实现接口上的注解。如果子类或实现方法具有任何 JAX-RS 注释,则忽略超类或接口方法上的所有注释。

于 2013-07-16T06:19:27.703 回答