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”)的语法糖)