JAX-RS ランタイム環境の使用不可化

Java™ API for RESTful Web Services (JAX-RS) ランタイム環境の使用不可化が必要な場合があります。JAX-RS ランタイム環境を使用不可にすると、JAX-RS フィーチャー (基本 JAX-RS ランタイム機能、Enterprise JavaBeans (EJB) ランタイム統合、Java Contexts and Dependency Injection (JCDI) ランタイム統合、および Servlet 3.0 Web コンテナー統合など) が使用不可になります。

このタスクについて

JAX-RS ランタイム環境を使用不可にすると、アプリケーションの JAX-RS 関連処理 (スキャンされた JAX-RS アノテーションが付けられたクラス、EJB メタデータ、および JCDI Bean 使用可能化の処理など) を実行できなくなります。JAX-RS ランタイム環境は、Web コンテナーへの要求および Web コンテナーからの応答を処理する目的では使用されません。

ベスト・プラクティス ベスト・プラクティス: JAX-RS ランタイム環境を使用不可にしても、JAX-RS アノテーションをスキャンする Servlet 3.0 ベースのアノテーション (例えば、javax.ws.rs.Path など) が使用不可になりません。アノテーションのスキャンを使用不可にするには、metadata-complete 属性を設定します。アノテーション注釈を使用不可にすると、JAX-RS 外部の他のすべてのコンポーネントのアノテーション注釈が使用不可になります。bprac

IBM® JAX-RS ランタイム環境を指す明示プラグ・ポイントは、com.ibm.websphere.jaxrs.server.IBMRestServlet サーブレット・クラスおよび com.ibm.websphere.jaxrs.server.IBMRestFilter フィルター・クラスです。Web モジュールの web.xml ファイルでこれらのクラスを servlet-class または servlet-filter として指定すると、IBM JAX-RS ランタイム環境がそのサーブレットに対する要求の処理に使用されます。

JAX-RS ランタイム環境が使用されないように使用不可に設定するには、これらのクラスを、サーブレットに対して予期された要求を処理できる他のサーブレットまたはフィルター・クラスで置き換えるか、または web.xml ファイルからサーブレット全体を除去します。

トラブルの回避 (Avoid trouble) トラブルの回避 (Avoid trouble): IBMRestServlet クラスを別のクラスに置き換えると、アプリケーションの既存の動作が変更されることがあります。サーブレット全体を除去すると、結果として要求が処理されなくなります。gotcha

com.ibm.websphere.jaxrs.server.IBMRestServlet または com.ibm.websphere.jaxrs.server.IBMRestFilter クラスを明示的に使用しない場合でも、JAX-RS 統合ランタイム環境でアプリケーションの処理が引き続き行われることがあります。 例えば、Web モジュールの web.xml ファイルが Servlet 3.0 ベースであり、JSR-311 仕様に従った適切な条件に適合する場合は、JAX-RS 統合ランタイム環境で JAX-RS アノテーションが付けられたスキャン済みクラスが処理され、アプリケーションで JAX-RS リソースに対する要求を処理できるサーブレットが注入されることがあります。

この機能およびその他の機能 (例えば、EJB、JCDI 統合など) を使用不可にするには、アプリケーション・サーバーでカスタム Java 仮想マシン (JVM) プロパティーの com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine に値 true を設定します。

手順

  1. IBMRestServlet および IBMRestFilter に対する参照を web.xml ファイルから除去します。 次の例は、IBM JAX-RS ランタイム環境を使用するアプリケーションのサンプル web.xml ファイルです。
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app 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_3_0.xsd"
        	version="3.0">
        <servlet>
            <servlet-name>MyRestApplication1</servlet-name>
            <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
            <init-param>
                <param-name>javax.ws.rs.Application</param-name>
                <param-value>com.ibm.websphere.jaxrs.example.Application1</param-value>
            </init-param>
            <init-param>
                <param-name>requestProcessorAttribute</param-name>
                <param-value>MyRestApplication1RequestProcessorAttribute</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet>
            <servlet-name>MyNonJAXRSApplication</servlet-name>
            <servlet-class>com.ibm.websphere.example.NonJAXRSServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        	<filter>
            <filter-name>MyRestApplication2</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.websphere.jaxrs.example.Application2</param-value>
            </init-param>
            <init-param>
                <param-name>requestProcessorAttribute</param-name>
                <param-value>MyRestApplication2RequestProcessorAttribute</param-value>
            </init-param>
        	</filter>
        <servlet-mapping>
            <servlet-name>MyRestApplication1</servlet-name>
            <url-pattern>/jaxrsapp1/*</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>MyNonJAXRSApplication</servlet-name>
            <url-pattern>/nonjaxrsapp/*</url-pattern>
        </servlet-mapping>
        <filter-mapping>
            <filter-name>MyRestApplication2</servlet-name>
            <url-pattern>/jaxrsapp2/*</url-pattern>
        	</filter-mapping>
    <web-app>
    次の例は、IBMRestServlet および IBMRestFilter クラスに対する参照を除去した後 web.xml ファイルがどのようになるかを示しています。
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app 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_3_0.xsd"
        	version="3.0">
        <servlet>
            <servlet-name>MyNonJAXRSApplication</servlet-name>
            <servlet-class>com.ibm.websphere.example.NonJAXRSServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>MyNonJAXRSApplication</servlet-name>
            <url-pattern>/nonjaxrsapp/*</url-pattern>
        </servlet-mapping>
    </web-app>
  2. アプリケーション・サーバーでカスタム JVM プロパティーの com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine に値 true を設定します。
  3. これを有効にするには、カスタム JVM プロパティーのアプリケーション・サーバーを再始動します。

タスクの結果

アプリケーションを処理しないように JAX-RS ランタイム環境を使用不可にしました。


トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_disable_runtime
ファイル名:twbs_jaxrs_disable_runtime.html