我想知道是否可以将请求从 servlet 分派到 Jersey(JAX-RS 实现)资源类。我正在尝试这样做,但它似乎不起作用,并且根据我的日志记录,从未达到球衣资源。
代码示例如下。由于某种原因,我试图做的事情是不可能的吗?
请注意,当我通过地址栏直接在网络浏览器中访问泽西资源时,它可以正常工作。
另请注意,“RequestDispatcher.forward()”按预期工作。只是“包含”没有。
小服务程序
//The Jersey dispatcher url-filter is set to '/api/*'
String servletID = "/api/items";
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(servletID);
dispatcher.include(request, response);
泽西岛资源
@GET @Path("/items")
@Produces ({MediaType.TEXT_XML})
public JAXBElement<Items> getItems(@PathParam("project") String project) throws IOException, JAXBException {
log.debug("reached getItems");
//Omitted code that returns 'Items' object wrapped in JAXBElement
}
web.xml 的相关部分
<servlet>
<servlet-name>jerseyDispatcher</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>uk.co.web.api.resource</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>jerseyDispatcher</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>