【问题标题】:Jersey JAX-RS: Specifying /* as base URL patternJersey JAX-RS:将 /* 指定为基本 URL 模式
【发布时间】:2015-05-10 05:53:32
【问题描述】:

我有一个动态 Web 应用程序,由于需要,我在 web.xml 文件中指定了两种类型的 servlet 映射; Faces Servlet 和 Jersey(JAX-RS 实现)。

我的问题是,如果我尝试在 Jersey 配置中使用 '/' 作为基本 url 模式,那么 Faces Servlet 的资源将停止工作,即,如果我对这些资源进行 REST 调用,则不会发生任何事情资源,否则如果我在 Jersey 配置中放置类似'/rest/' 的东西,一切正常。我的 web.xml 文件如下所示:

<!-- Jersey -->
<servlet>
  <servlet-name>Jersey REST Service</servlet-name>
  <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
  <init-param>
    <param-name>jersey.config.server.provider.packages</param-name>
    <param-value>com.saf.web.v2.beans</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>Jersey REST Service</servlet-name>
  <url-pattern>/*</url-pattern>
</servlet-mapping>

<!-- Faces Servlet -->
<servlet>
  <servlet-name>Faces Servlet</servlet-name>
  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  <load-on-startup>100</load-on-startup>
</servlet>
  <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

有没有办法指定 Jersey 映射,所以 url 模式中没有任何内容,但 '/*' 和 Faces Servlet 资源也可以同时正常工作。

谢谢!

【问题讨论】:

    标签: java rest servlets jax-rs jersey-2.0


    【解决方案1】:

    我遇到了同样的问题,但我通过使用解决了它 /休息/* 对于泽西的 servlet 并且应用程序的其他部分可以具有任何其他 url 模式,如在您的情况下,它是 JSF 的 servlet 的 *.xhtml。

    【讨论】:

      【解决方案2】:

      如果您定义 Jersey 应该服务所有请求(这就是 /* 的意思),Faces Servlet 就没有机会了。所以总的来说:没有这样的方法。

      也许您可以解决这个问题,将 Jersey 映射到 /rest 并编写一个映射到 /* 的自己的 Servlet,其中 dispatches 映射到其他 servlet 之一。我不建议这样做。

      【讨论】:

        猜你喜欢
        • 2011-04-22
        • 1970-01-01
        • 2012-06-03
        • 2014-01-24
        • 2016-12-02
        • 1970-01-01
        • 2012-04-20
        • 2011-10-26
        • 2017-07-02
        相关资源
        最近更新 更多