65.3.2. JAX-RS 設定


概要

ここでは、Blueprint XML または Spring XML で定義される JAX-RS サービスエンドポイントで Bean Validation を有効にする方法を説明します。Bean Validation の実行に使用されるインターセプターは、JAX-WS エンドポイントと JAX-RS 1.1 エンドポイントの両方に共通です (JAX-RS 2.0 エンドポイントは異なるインターセプタークラスを使用します)。

Namespaces

このセクションに記載されている XML の例では、以下の表で示すように、必ず jaxws namespace 接頭辞を Blueprint または Spring のいずれかの適切な namespace にマッピングしてください。

Expand
XML 言語Namespace

ブループリント

http://cxf.apache.org/blueprint/jaxws

Spring

http://cxf.apache.org/jaxws

Bean 検証機能

JAX-RS エンドポイントで最も簡単に Bean 検証を有効化する方法は、Bean Validation 機能 をエンドポイントに追加することです。Bean Validation 機能は、以下のクラスによって実装されます。

org.apache.cxf.validation.BeanValidationFeature
この機能クラスのインスタンスを JAX-RS エンドポイントに追加することにより (Java API または XML の jaxrs:serverjaxrs:features 子要素を経由)、エンドポイントで Bean バリデーションを有効にできます。この機能は、着信メッセージデータを検証する In インターセプターと、戻り値を検証する Out インターセプター (インターセプターはデフォルトの設定パラメーターで作成されます) の 2 つのインターセプターをインストールします。

検証例外マッパー

JAX-RS エンドポイントは、検証例外マッパー (HTTP エラー応答にマッピング) を設定する必要もあります。この検証例外マッパーは、HTTP エラー応答に対する検証例外をマッピングします。以下のクラスは JAX-RS の検証例外マッピングを実装します。

org.apache.cxf.jaxrs.validation.ValidationExceptionMapper
JAX-RS 2.0 仕様に従って検証例外マッピングを実装します。入力パラメーター検証違反は HTTP ステータスコード 400 Bad Request にマップされます。戻り値の検証違反 (または内部検証違反) は HTTP ステータスコード 500 Internal Server Error にマップされます。

JAX-RS 設定のサンプル

以下の XML の例は、commonValidationFeature Bean を JAX-RS 機能として追加し、exceptionMapper Bean を JAX-RS プロバイダーとして追加することで、JAX-RS エンドポイントで Bean バリデーション機能を有効にする方法を示しています。

<jaxrs:server address="/bwrest">
    <jaxrs:serviceBeans>
        <ref bean="bookWorldValidation"/>
    </jaxrs:serviceBeans>
    <jaxrs:providers>
        <ref bean="exceptionMapper"/>
    </jaxrs:providers>
    <jaxrs:features>
        <ref bean="commonValidationFeature" />
    </jaxrs:features>
</jaxrs:server>

<bean id="bookWorldValidation" class="org.apache.cxf.systest.jaxrs.validation.spring.BookWorldImpl"/>
<beanid="exceptionMapper"class="org.apache.cxf.jaxrs.validation.ValidationExceptionMapper"/>

<bean id="commonValidationFeature" class="org.apache.cxf.validation.BeanValidationFeature">
    <property name="provider" ref="beanValidationProvider"/>
</bean>

<bean id="beanValidationProvider" class="org.apache.cxf.validation.BeanValidationProvider">
    <constructor-arg ref="validationProviderResolver"/>
</bean>

<bean id="validationProviderResolver" class="org.example.HibernateValidationProviderResolver"/>
Copy to Clipboard Toggle word wrap

HibernateValidationProviderResolver クラスの実装例は、「HibernateValidationProviderResolver クラスの例」 を参照してください。OSGi 環境 (Apache Karaf) のコンテキストで beanValidationProvider のみを設定する必要があります。

注記

コンテキストに応じて、必ず jaxrs 接頭辞を Blueprint または Spring のいずれかの適切な XML namespace にマップしてください。

一般的な Bean Validation 1.1 インターセプター

Bean バリデーション機能を使用する代わりに、任意で Bean 検証インターセプターをインストールして検証実装をより詳細に制御することができます。JAX-RS は、この目的のために JAX-WS と同じインターセプターを使用します (「一般的な Bean Validation 1.1 インターセプター」 参照)。

Bean Validation インターセプターを使用した JAX-RS 設定の例

以下の XML の例は、関連する In インターセプター Bean と Out インターセプター Bean をサーバーエンドポイントに明示的に追加することで、JAX-RS エンドポイントで Bean Validation 機能を有効にする方法です。

<jaxrs:server address="/">
    <jaxrs:inInterceptors>
        <ref bean="validationInInterceptor" />
    </jaxrs:inInterceptors>

    <jaxrs:outInterceptors>
        <ref bean="validationOutInterceptor" />
    </jaxrs:outInterceptors>

    <jaxrs:serviceBeans>
    ...
    </jaxrs:serviceBeans>

    <jaxrs:providers>
        <ref bean="exceptionMapper"/>
    </jaxrs:providers>
</jaxrs:server>

<bean id="exceptionMapper" class="org.apache.cxf.jaxrs.validation.ValidationExceptionMapper"/>

<bean id="validationInInterceptor" class="org.apache.cxf.validation.BeanValidationInInterceptor">
    <property name="provider" ref="beanValidationProvider" />
</bean>

<bean id="validationOutInterceptor" class="org.apache.cxf.validation.BeanValidationOutInterceptor">
    <property name="provider" ref="beanValidationProvider" />
</bean>

<bean id="beanValidationProvider" class="org.apache.cxf.validation.BeanValidationProvider">
    <constructor-arg ref="validationProviderResolver"/>
</bean>

<bean id="validationProviderResolver" class="org.example.HibernateValidationProviderResolver"/>
Copy to Clipboard Toggle word wrap

HibernateValidationProviderResolver クラスの実装例は、「HibernateValidationProviderResolver クラスの例」 を参照してください。OSGi 環境 (Apache Karaf) のコンテキストで beanValidationProvider のみを設定する必要があります。

BeanValidationProvider の設定

「BeanValidationProvider の設定」 の説明にあるように、カスタム BeanValidationProvider インスタンスを検証インターセプターに注入できます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat