簡體   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