我无法使用简单的@ApplicationPath注释让JAX-RS使用Resteasy 2.3.5。这是我正在使用的代码:
@ApplicationPath("/rest")
public class MyApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
final Set<Class<?>> s = new HashSet<Class<?>>();
s.add(ViewController.class);
return s;
}
}
@Path("/")
public class ViewController {
@GET
@Path("/test")
public String test() {
return "Yes!";
}
}
请求&#34; / uri-context / rest / test /&#34;投掷404.使用泽西岛一切都无缝地工作。因为这是JAX-RS的一个非常重要的部分,所以出了什么问题?
目前我只需要使用4种Resteasy库:
尽管如此,放置所有库(resteasy-cdi-2.3.5.Final.jar除外)也无法解决问题。
答案 0 :(得分:3)
请注意 Jax-RS 1.0,路径和斜杠
@ApplicationPath("api") //NO slash
public class MyApplication extends Application {
}
@Path("/users") // YES slash
public class ViewController {
@GET
@Path("all") //NO slash
public String all() {
return "Yes!";
}
}
通常使用斜线可以让它更好。
JAX-RS 2的更新:
在JAX-RS 2中,规范DOES表示@ApplicationPath
或@Path
中的前导和尾随斜杠将被忽略。
(3)If the resource class URI template does not end with a ‘/’ character
then one is added during the concatenation.
对于我在Jersey 2和Resteasy上测试的内容,现在已经得到了尊重。