Java 简单路径求解

Java 简单路径求解,java,jax-rs,resteasy,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(@QueryPara

我得到了这样的东西

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时,都无法找到relative的资源 前

我读到了

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


如果服务不是servlet映射或路径的一部分,请删除服务

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

编辑:

因此,您的项目是使用myapp context name+部署的,您在资源类中定义了服务前缀+路径。+servlet映射是/*So/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)
  {
    ...
  }

}

是否尝试删除路径表示法中的值=?我不是100%了解value=的用途,因为我对JAX-RS还很陌生,但可能只是尝试一下:

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

我已将resteasy.servlet.mapping.prefix设置为/services,并将resteasy.scan设置为true。我还应该告诉你们什么呢?99.99%的时间里,计算机不会出错:)所以唯一的方法就是调试,看看哪里出了问题。有一件事我在你的类上没有看到,@Component annotation,你对你的资源类进行了注释吗?Scan=true需要此批注。我有第二个类,只有一个类的@path annotation方法,它工作正常,我没有任何@component批注,我现在就检查@component,对不起,我的错。我会在一点时间内更新原始答案。我会尝试,我认为这是确定的。如果这不起作用,您能否验证web.xml文件中的servlet映射是否为JAX-RS REST servlet/services/*删除
值=
无效,这是默认值。正如Elazar提到但没有解释的那样,@Path(“xxx”)是@Path(value=“xxx”)的语法糖)