gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:37:33 26 4
gpt4 key购买 nike

我正在使用嵌入式 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();

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

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

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

最佳答案

api-doc points out :

When published in a Servlet container, the value of the application path may be overridden using a servlet-mapping element in the web.xml.

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

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

您可以尝试添加此初始化参数:

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

关于java - RESTEasy 中无法识别 JAX-RS 应用程序路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25162856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com