Menu Close

59.3.3. Java アノテーションの使用

概要

Apache CXF は、開発者がエンドポイントによって使用されるインターセプターチェーンを指定できるようにする 4 つの Java アノテーションを提供します。インターセプターをエンドポイントにアタッチする他の方法とは異なり、アノテーションはアプリケーションレベルのアーティファクトにアタッチされます。使用されるアーティファクトによって、アノテーションの効果の範囲が決まります。

アノテーションを配置する場所

アノテーションは以下のアーティファクトに配置できます。

  • エンドポイントを定義するサービスエンドポイントインターフェース (SEI)

    アノテーションが SEI に配置されると、インターフェースを実装するサービスプロバイダーと、SEI を使用してプロキシーを作成するすべてのコンシューマーが影響を受けます。

  • サービス実装クラス

    アノテーションが実装クラスに配置されると、実装クラスを使用するサービスプロバイダーはすべて影響を受けます。

アノテーション

アノテーションはすべて org.apache.cxf.interceptor パッケージにあり、表59.2「インターセプターチェーンアノテーション」 で説明されています。

表59.2 インターセプターチェーンアノテーション

アノテーション説明

InInterceptors

インバウンドインターセプターチェーンのインターセプターを指定します。

OutInterceptors

アウトバウンドインターセプターチェーンのインターセプターを指定します。

InFaultInterceptors

インバウンド障害インターセプターチェーンのインターセプターを指定します。

OutFaultInterceptors

アウトバウンド障害インターセプターチェーンのインターセプターを指定します。

インターセプターのリスト

インターセプターのリストは、チェーンアノテーションでインターセプターをリストする構文 に示されている構文を使用して、完全修飾クラス名のリストとして指定されます。

チェーンアノテーションでインターセプターをリストする構文

interceptors={"interceptor1", "interceptor2", ..., "interceptorN"}

サービス実装へのインターセプターのアタッチ は、SayHiImpl によって提供されるロジックを使用するエンドポイントのインバウンドインターセプターチェーンに 2 つのインターセプターをアタッチするアノテーションを示しています。

サービス実装へのインターセプターのアタッチ

import org.apache.cxf.interceptor.InInterceptors;

@InInterceptors(interceptors={"com.sayhi.interceptors.FirstLast", "com.sayhi.interceptors.LogName"})
public class SayHiImpl implements SayHi
{
  ...
}