【问题标题】:RestEasy path solvingRestEasy路径求解
【发布时间】:2011-01-28 11:26:17
【问题描述】:

我得到了这样的东西

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

【问题讨论】:

    标签: java jax-rs resteasy


    【解决方案1】:

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

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

    编辑:

    所以你的项目是使用 myapp 上下文名称部署的 + 你有服务前缀 + 在资源类中定义的路径。+ servlet 映射是 /* 所以 /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)
      {
        ...
      }
    
    }
    

    【讨论】:

    • 我将 resteasy.servlet.mapping.prefix 设置为 /services
    • 并将 resteasy.scan 设置为 true。我还应该告诉你什么?
    • 99.99% 的情况下,计算机不会出错 :) 所以唯一的方法是调试并查看问题所在。我在您的课程中没有看到的一件事是,@Component 注释,您是否注释了您的资源类? Scan=true 需要这个注释。
    • 我有第二个类,只有一个带有@path 注释的类方法,它工作正常,我没有任何@component 注释,我现在会检查
    • 对不起@Component,我的错。我稍后会更新原始答案。
    【解决方案2】:

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

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

    【讨论】:

    • 我会试试的,我觉得还可以
    • 如果这不起作用,您能否验证 web.xml 文件中的 servlet 映射是 JAX-RS REST Servlet/服务/*
    • 去掉value=没有效果,是默认的。
    • 正如 Elazar 触摸但没有解释的那样,@Path("xxx") 是 @Path(value="xxx") 的语法糖
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2016-02-13
    相关资源
    最近更新 更多