Jersey JAX-RS:指定/ *作为基本URL模式

时间:2015-03-09 05:41:54

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

我有一个动态Web应用程序,由于这些要求,我在web.xml文件中指定了两种类型的servlet映射; Faces Servlet&泽西岛(JAX-RS实施)。

我的问题是,如果我尝试使用' / '作为Jersey配置中的基本url-pattern,Faces Servlets的资源停止工作,即如果我对这些资源进行REST调用没有任何反应,否则一切正常,如果我放置像' / rest / '在Jersey配置中。我的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-pattern中没有任何内容,但是&#39; / *&#39;和Faces Servlet资源同时也可以正常工作。

谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

我有同样的问题,但我通过使用修复它      /休息/*        对于球衣的小配件  和应用程序的其他部分可以有任何其他url模式,在你的情况下,它是JSF的servlet的* .xhtml。