JAX-RS フィルター用 web.xml ファイルの構成
web.xml ファイルには、モジュール内の Web コンポーネントの構造、および外部との依存関係に関する情報が含まれ、 実行時のコンポーネントの使用方法が記述されています。 Web コンテナーが Java™ API for RESTful Web Services (JAX-RS) アプリケーションを実行できるように web.xml ファイルを構成する際、フィルター定義で URL を指定して、それらの URL ではフィルターが起動されるように指定することができます。
このタスクについて
Web アプリケーションが JAX-RS アプリケーション・コードを使用できるように web.xml ファイルを構成することができます。JAX-RS コードを 実行するために使用する IBM® 固有 の JAX-RS フィルターを指定できます。web.xml ファイルは、Web アプリケーションを構成する Web コンポーネントの構成およびデプロイメント情報を提供します。このデプロイメント記述子ファイルについて詳しく学習するには、JAX-RS 用の web.xml ファイルの構成 に関する説明を参照してください。
サーブレットを使用するときには、 web.xml 内に定義されたサーブレット・パスがベース URL に付加されます。 フィルターの場合は、リソースのベース URL にパスが追加されることはありません。 その代わりに、フィルター URL マッピングは、フィルターが起動される可能性のある URL を 指定します。例えば、ルート・リソース の @javax.ws.rs.Path 値が myresource の場合、リソースの最終的 な URL は http://<your_hostname>:<your Web_container_port>/<context_root_of_Web_application>/myresource です。 ルート・リソースが正しく処理されるには、フィルターの URL マッピング・パターンが myresource に 一致しなければなりません。この例では、 URL パターンに /* または /myresource を 使用できます。アプリケーション内に複数のリソースがある場合、 フィルターの URL パターンはそれらすべてのリソースに一致する必要があります。/* パターン は、フィルターの一般的な値です。
着信要求 URL が JAX-RS アプリケーション内のどの JAX-RS リソースにも 一致しない場合、要求はフィルター・チェーンの残りの部分に 渡されます。アプリケーションによっては、フィルター動作を使用して、要求が JAX-RS アプリケーションによって処理されるようにしたり、あるいは、使用可能な JAX-RS リソースがない場合は、基礎にある Web コンテナー成果物 (例えば、JavaServer Pages (JSP) など) に要求が渡っていくようにすることがあります。一致する成果物が Web コンテナーにない場合は、Web コンテナーがエラー応答を担当します。
手順
タスクの結果
例
以下の例では、JAX-RS アプリケーションにフィルターを適用するよう構成された WEB-INF/web.xml ファイル を示します。この例は、RestApplication1 フィルターを定義します。着信要求 が RestApplication1 フィルター内にあるリソースと一致すると、 応答は RestApplication1 フィルターから生成されます。着信要求が RestApplication1 フィルター内にあるリソースとは一致しないが、 OtherRestApplicationFilter 内にあるリソースに一致する場合、 応答は OtherRestApplicationFilter フィルターから生成されます。 着信 URL がどのフィルターにも一致しない場合、要求は JSP など別の Web コンテナー成果物からサービスを受けられます。
<?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 アプリケーションをアセンブルします。