繁体   English   中英

RESTEasy中无法识别JAX-RS应用程序路径

[英]JAX-RS application path not recognized in RESTEasy

我正在将嵌入式Jetty 9.1.0.v20131115与RESTEasy 3.0.7.Final一起使用。 我定义了一个JAX-RS应用程序,因为所有我的单例和类都在工作,所以我知道它在工作。 看起来像这样:

@ApplicationPath("/foo/")
public class MyApplication extends Application {

然后,我有这样的资源:

@Path(value = "bar")
public interface BarResource {

  @GET
  @Path(value = "test")
  public String getTest();

因此,我尝试将GET发出到/foo/bar/test ,但失败。 仅当我将资源注释更改为以下内容时,它才起作用:

@Path(value = "/foo/bar")
public interface BarResource {

这违反了@ApplicationPath("/foo/")的全部目的,允许相对于某些基本路径定义我的资源。 RESTEasy为什么不选择@ApplicationPath批注?

api文档指出

在Servlet容器中发布时,可以使用web.xml中的servlet-mapping元素覆盖应用程序路径的值。

如果您像这样注册RestEasy HttpServletDispatcher,似乎正在发生这种情况:

ServletContextHandler servletHandler = new ServletContextHandler();
servletHandler.setInitParameter("javax.ws.rs.Application", "com.company.MyApplication");
servletHandler.addServlet(new ServletHolder(HttpServletDispatcher.class), "/*");

您可以尝试添加此init参数:

servletHandler.setInitParameter("resteasy.servlet.mapping.prefix", "/application-path");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM