java - Jersey JAX-RS : Specifying/* as base URL pattern

标签 java rest servlets jax-rs jersey-2.0

我有一个动态 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 资源也可以同时正常工作。

谢谢!

最佳答案

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

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

关于java - Jersey JAX-RS : Specifying/* as base URL pattern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28935844/

相关文章:

java - 找不到适合 jdbc :oracle:thin:@localhost:1522:xe 的驱动程序

java - 重新绘制图形问题

java - 在servlet中通过scriptlet调用类对象方法

java - 当从 servlet 使用 sendError 时,tomcat 不显示错误消息

java - REST Web 服务 - 如何像单例一样使用服务?

java - 如何从 POST 请求获取 XML 并在 Servlet Filter 中修改它?

java - 如何在运行时通过 netbeans 窗口向 java 应用程序提供输入?

java - 通过Java将sqlite数据库连接到http服务器

json - Grails JSON字段丢失

javascript - POST 请求未将文件上传到服务器