2017-09-15 51 views
0

我幾天來一直在爲此折磨我的頭腦。這個小sniplet工作正常(在Tomcat上使用Jersey 2.26-b03)。Jersey REST GET正在工作,但不是。指定的HTTP方法不允許用於請求的資源

@GET 
@Path("/{code}") 
public Response update(@PathParam("code") String code) { 
    System.out.println("!!!!!!!"); 
    return Response.status(Response.Status.OK).build(); 
} 

curl -i -X GET http://localhost:18270/nyx/rest/servervirtueel/SVM0000 
HTTP/1.1 200 OK 

後面跟着一串澤西島追蹤我啓用。但是,如果我只改變得到一個PUT(完全相同的方法,只是改變了註釋):

@PUT 
@Path("/{code}") 
public Response update(@PathParam("code") String code) { 
    System.out.println("!!!!!!!"); 
    return Response.status(Response.Status.OK).build(); 
} 

curl -i -X PUT http://localhost:18270/nyx/rest/servervirtueel/SVM0000 
HTTP/1.1 405 Method Not Allowed 

其次是HTML告訴我,「指定的HTTP方法是不允許用於所請求的資源」。但是,POST不起作用(再次更改註釋)。

+0

我希望您在更改'@ PUT'註釋並將其部署到tomcat!後重新編譯代碼。對我來說,在Tomcat的'8.5.11'上運行澤西'2.26'。 –

+0

是的,我同意這不符合您提供的信息。 –

+0

當然,已經有上千次了。之後當然會將它改爲POST,所以我知道我在做什麼。我正在使用Tomcat 7.0.75。但我更進了一步,寫了一個vanilla servlet來覆蓋doGet doPut doPost和doDelete。還有PUT和DELETE不起作用,其他都是。所以它似乎是Tomcat的東西,而不是Jersey。但設置readonly和web-resource-collection的http方法並不能解決它。此刻,這是我所有的信息,我希望我知道的比我所看到的更多。 – tbeernot

回答

0

事實證明OWASP方法白名單閥在Tomcat(Catalina)級配置爲僅允許GET和POST;這是一個迄今爲止只支持SOAP服務的web應用程序。您在web.xml或server.xml中看不到此內容,但它位於Catalina/localhost/webappname.xml中。

相關問題