RestEasy路径解决

时间:2011-01-28 11:26:17

标签: java jax-rs resteasy

我得到这样的东西

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注释必须存在于类和/或资源方法上。如果它同时存在于类和方法中,则资源方法的相对路径是类和方法的串联。

2 个答案:

答案 0 :(得分:1)

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

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

编辑:

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

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

EDIT2:

如果您是自动扫描,则需要使用@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)
  {
    ...
  }

}

答案 1 :(得分:0)

您是否尝试在路径表示法中删除值=?我不是百分之百的价值因为我对JAX-RS很新,但可能只是尝试做:

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