[英]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.