Jersey返回HTTP状态405 - 方法不允许

see*_*ead 19 java tomcat jax-ws jersey

我有一个非常简单的端点使用泽西岛.我的URL是静态的,它不需要任何请求参数.它看起来像这样:

@GET
@Path("/mydata")
@Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON)  
public String getData()  {
  return "{'name': 'value'}";
}
Run Code Online (Sandbox Code Playgroud)

但是,每当我请求此URL时,我总是会收到405状态代码 - 方法不允许.

奇怪的是,如果我更改@Path注释并定义路径变量,例如@Path("/chart/{blah}")它可以正常工作.

有没有人知道为什么我必须定义一个路径变量才能使它工作?我不需要路径变量,添加一个只是为了获得200响应似乎很愚蠢.

see*_*ead 12

谢谢你的建议.它最终让我愚蠢地为我的球衣SpringServlet输入了一个不正确的url模式.它/不是/*

<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>
Run Code Online (Sandbox Code Playgroud)


Eug*_*vas 5

注释类而不是方法:

@Path("/mydata")
public class MyClass(){

@GET
@Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON)  
public String getData()  {
  return "{'name': 'value'}";
}

}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,但是反过来也会给我带来麻烦