2017-09-15 102 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中。

相关问题