我有一个动态 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/