59.3.3. Java アノテーションの使用
概要
Apache CXF は、開発者がエンドポイントによって使用されるインターセプターチェーンを指定できるように、4 つの Java アノテーションを提供します。インターセプターをエンドポイントに割り当てる他の手段とは異なり、アノテーションはアプリケーションレベルのアーティファクトに割り当てられます。使用するアーティファクトにより、アノテーションの影響範囲が決まります。
アノテーションを配置する場所
アノテーションは以下のアーティファクトに配置できます。
エンドポイントを定義するサービスエンドポイントインターフェイス (SEI)
アノテーションが SEI に配置されると、インターフェイスを実装するサービスプロバイダーすべてと、プロキシーの作成に SEI を使用するコンシューマーすべてに影響があります。
サービス実装クラス
アノテーションが実装クラスに配置されると、実装クラスを使用するすべてのサービスプロバイダーが影響を受けます。
アノテーション
アノテーションはすべて org.apache.cxf.interceptor パッケージにあり、表59.2「インターセプターチェーンアノテーション」 で説明されています。
Annotation | 説明 |
---|---|
インバウンドインターセプターチェーンのインターセプターを指定します。 | |
アウトバウンドインターセプターチェーンのインターセプターを指定します。 | |
インバウンドフォールトインターセプターチェーンのインターセプターを指定します。 | |
アウトバウンド障害インターセプターチェーンのインターセプターを指定します。 |
インターセプターの一覧表示
インターセプターの一覧は、チェーンアノテーションでインターセプターを一覧表示する構文 に記載されている構文を使用して、完全修飾クラス名のリストとして指定されます。
チェーンアノテーションでインターセプターを一覧表示する構文
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
{
...
}