3

我得到这样的东西

import javax.ws.rs.GET;
import javax.ws.rs.Path;

public class xxx
{

  @GET
  @Path(value = "path1")
  public Response m1(@QueryParam(value = "a") String a)
  {
    ...
  }



  @GET
  @Path(value = "path2")
  public Response m2(@QueryParam(value = "b") String b)
  {
    ...
  }

}

使用 restEasy 我得到 HTTP 状态 404 - 每次我尝试获取 path1 或 path2 时都找不到相对资源 例如http://someip:8080/myserv/services/path1?a=asd

我在这里阅读了http://docs.jboss.org/resteasy/docs/1.2.GA/userguide/html_single/#Using_Path

@javax.ws.rs.Path 注释必须存在于类和/或资源方法上。如果它同时存在于类和方法上,则资源方法的相对路径是类和方法的串联。

4

2 回答 2

1

services如果它不是您的 servlet 映射或路径的一部分,请将其删除。

(有关您的路径/servlet 映射的更多信息将使我们更好地理解)

编辑:

因此,您的项目使用 myapp 上下文名称部署 + 您有服务前缀 + 在资源类中定义的路径。+ servlet 映射是 /* 所以 /myapp/services/path 应该可以工作。

您可以提高 resteasy 类的日志记录级别以查看问题所在。或在调试模式下,您可以在 PathHelper.replaceEnclosedCurlyBraces 中查看请求的路径

编辑2:

如果您是自动扫描,则需要使用 @Provider 注释类

Resteasy v1.2.1

@Provider
@Path("/")
public class xxx
{

  @GET
  @Path(value = "path1")
  public Response m1(@QueryParam(value = "a") String a)
  {
    ...
  }



  @GET
  @Path(value = "path2")
  public Response m2(@QueryParam(value = "b") String b)
  {
    ...
  }

}
于 2011-01-28T11:31:57.883 回答
0

您是否尝试在路径符号中删除 value= ?我不是 100% 了解 value= 的用途,因为我对 JAX-RS 很陌生,但也许尝试一下:

@GET  
@Path("path1")  
public Response m1(@QueryParam(value = "a") String a)  
{  
  ...  
}  
于 2011-01-28T13:33:57.833 回答