Jersey returns HTTP Status 405 - Method Not Allowed
Solution 1
Thanks for the suggestions. It ended up being me stupidly entering an incorrect url-pattern for my jersey SpringServlet. It was /
instead of /*
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
</servlet>
<url-pattern>/*</url-pattern>
<servlet-mapping>
<servlet-name>Chart Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
Solution 2
Annotate the class instead of the method:
@Path("/mydata")
public class MyClass(){
@GET
@Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON)
public String getData() {
return "{'name': 'value'}";
}
}
I don't know why but it also gives me problems the other way
Solution 3
I think it's probably because you specified
@Produces(MediaType.APPLICATION_JSON).
1) Maybe you should try running the following in a terminal
curl -i -X GET -H 'Accept:application/json' http://localhost:8080/mydata
2) Or try change to
@Produces({MediaType.APPLICATION_JSON, MediaType.TEXT_HTML})
Solution 4
another possible source of such problem: be very attentive with all the params and annotations. I was having such problem, when I was calling a method with POST, while it was annotated with @PUT
seedhead
Updated on July 30, 2022Comments
-
seedhead almost 2 years
I have a very simple endpoint using Jersey. My URL is static, it doesn't require any request parameters. It looks like this:
@GET @Path("/mydata") @Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON) public String getData() { return "{'name': 'value'}"; }
However, whenever I request this URL, I always receive a HTTP Status code of 405 - Method Not Allowed.
The weird thing is, that if I change the
@Path
annotation and define a path variable e.g.@Path("/chart/{blah}")
it works fine.Does anyone have an idea why I have to define a path variable to get this to work? I don't need a path variable and it seems silly to add one just to get a 200 response.
-
seedhead almost 12 yearsThanks for the suggestion, unfortunately both of these still result in a 405 being returned.
-
tanyehzheng almost 12 years@seedhead sorry, can you try method 1 again? I realized that I copy and pasted the wrong header