2013-07-16 28 views
0

我有以下服務..獲取有關CXF 404 GET,PUT和DELETE資源,而POST正常工作

@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未找到錯誤。我正在使用REST控制檯來測試該服務。另外當我做

http://localhost:8081/serv?_wadl 

我只看到列出的POST端點,沒有任何GET,PUT或DELETE資源顯示在列表中。我錯過了什麼?

+0

從我看到的一切都很好。你能顯示你的GET/PUT/DELETE測試的URL嗎? –

+0

GET \t http:// localhost:8081/serv/persistence/items/6a46f095-1506-442e-83c9-183c9e3379fe – user1151292

回答

1

此服務被宣佈爲interface

實現此接口的類在哪裏?

使用JAX-RS時,有一些關於「註釋繼承」的規則。

JAX-RS 1.1 - 3.6註釋繼承:

JAX-RS註釋可以對方法和 方法參數的超類或實現的接口中使用。如果該方法及其參數沒有任何JAX-RS 自己的註釋,則這些註釋是由相應子類或實現類方法 繼承的 。在超級類別上的註釋優先於在實現的界面上的那些註冊類型的 。如果子類或實現方法具有任何JAX-RS註釋,則忽略所有超類或接口方法上的註釋。

+0

gotcha ..我在實現類中有多餘的@PathParam註釋。解決了。 :) – user1151292

+0

有時候人們會亂用配置文件(如web.xml)。他們重新分配Web服務路徑,然後沒有任何工作正確。我很高興這不是你的情況(我討厭被低估)。 –

相關問題