为 JAX-RS 过滤器配置 web.xml 文件
web.xml 文件包含有关模块中的 Web 组件的结构和外部依赖项的信息,并描述运行时如何使用组件。要使 Web 容器能够运行 Java™ API for RESTful Web Services (JAX-RS) 应用程序,您可以配置 web.xml 文件以定义过滤器,这些过滤器指示可用于调用过滤器的可能 URL。
关于此任务
您可以配置 Web 应用程序的 web.xml 文件以启用 JAX-RS 应用程序代码。您可以指定特定于 IBM® 的 JAX-RS 过滤器以用于运行 JAX-RS 代码。web.xml 文件用于提供构成 Web 应用程序的 Web 组件的配置和部署信息。请参阅有关为 JAX-RS 配置 web.xml 文件的信息,以了解有关此部署描述符文件的更多资料。
使用 Servlet 时,将对基本 URL 追加 web.xml 中定义的任何 Servlet 路径。过滤器不会对资源基本 URL 追加路径。而是,过滤器 URL 映射指示可用于调用过滤器的可能 URL。例如,如果根资源的 @javax.ws.rs.Path 值为 myresource,那么该资源的最终 URL 将是 http://<your_hostname>:<your Web_container_port>/<context_root_of_Web_application>/myresource。过滤器的 URL 映射模式必须与 myresource 匹配,这样才能正确地提供根资源。对于本示例而言,您可以使用 /* 或 /myresource 作为 URL 模式。应用程序包含多个资源时,过滤器的 URL 模式必须与所有资源匹配。/* 模式是过滤器的常用值。
如果入局请求 URL 与 JAX-RS 应用程序中的任何 JAX-RS 资源都不匹配,那么该请求将被传递到过滤器链的余下部分。根据应用程序不同,您可能想使用过滤行为以使该请求由 JAX-RS 应用程序处理;或者,如果没有可用的 JAX-RS 资源,那么该请求将转到底层 Web 容器工件,例如 JavaServer Pages (JSP)。如果 Web 容器没有匹配的工件,那么 Web 容器负责进行错误响应。
过程
结果
示例
以下示例说明为了对 JAX-RS 应用程序应用过滤器而配置的 WEB-INF/web.xml 文件。此示例定义了 RestApplication1 过滤器。如果入局请求 URL 与 RestApplication1 过滤器中的资源匹配,那么将从 RestApplication1 过滤器中生成响应。如果入局请求 URL 与 RestApplication1 过滤器中的资源不匹配,但与 OtherRestApplicationFilter 中的资源匹配,那么将从 OtherRestApplicationFilter 过滤器中生成响应。如果入局 URL 与过滤器不匹配,那么可以从另一个 Web 容器工件(例如 JSP)中处理该请求。
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4"
xmlns=http://java.sun.com/xml/ns/j2ee
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>RestApplication1</filter-name>
<filter-class>com.ibm.websphere.jaxrs.server.IBMRestFilter</filter-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.ibm.rest.sample.app1.MyApplication</param-value>
</init-param>
<init-param>
<param-name>requestProcessorAttribute</param-name>
<param-value>restApplication1ProcessorID</param-value>
</init-param>
</filter>
<filter>
<filter-name>OtherRestApplicationServlet</filter-name>
<filter-class>com.ibm.websphere.jaxrs.server.IBMRestFilter</filter-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.ibm.rest.other.sample.OtherApplication</param-value>
</init-param>
<init-param>
<param-name>requestProcessorAttribute</param-name>
<param-value>otherRestApplicationID </param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>RestApplication1</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>OtherRestApplicationServlet</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
下一步做什么
组装 Web 应用程序。