Menu Close

47.4. Apache CXF エクステンションの使用

概要

Apache CXF は、開発者が一連の挿入アノテーションを単一のアノテーションに置き換えることを可能にする標準の JAX-WS インジェクションメカニズムにエクステンションを提供します。単一のアノテーションは、アノテーションを使用して抽出されるデータのフィールドが含まれる Bean に配置されます。たとえば、リソースメソッドに idtype、および size という 3 つのクエリーパラメーターが含まれることが想定される場合、単一の @QueryParam アノテーションを使用して、対応するフィールドを持つ Bean にすべてのパラメーターを注入できます。

注記

代わりに @BeanParam アノテーションの使用を検討してください (JAX-RS 2.0 以降で利用可能)。標準的な @BeanParam のアプローチはプロプライエタリー Apache CXF エクステンションよりも柔軟性が高いため、推奨される代替手段となります。詳細は、「Java Bean へのパラメーターの注入」 を参照してください。

サポートされるインジェクションアノテーション

このエクステンションは、すべてのインジェクションパラメーターをサポートしません。サポートしているのは次のものだけです。

  • @PathParam
  • @QueryParam
  • @MatrixParam
  • @FormParam

構文

アノテーションが Bean へのシリアルインジェクションを使用することを示すには、以下の 2 つの処理を行う必要があります。

  1. アノテーションのパラメーターを空の文字列として指定します。たとえば、@PathParam("") は、URI テンプレート変数のシーケンスを Bean にシリアライズするように指定します。
  2. アノテーション付きのパラメーターが、注入された値と一致するフィールドを持つ Bean であることを確認します。

例47.7「クエリーパラメーターの Bean への注入」 は、複数の Query パラメーターを Bean に注入する例を示しています。リソースメソッドでは、リクエスト URI に type および id の 2 つのクエリーパラメーターが含まれることが想定されています。これらの値は、Monster Bean の対応するフィールドに注入されます。

例47.7 クエリーパラメーターの Bean への注入

import javax.ws.rs.QueryParam;
import javax.ws.rs.PathParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
...

@Path("/monstersforhire/")
public class MonsterService
{
  ...
  @POST
  public void updateMonster(@QueryParam("") Monster bean)
  {
    ...
  }
  ...
}

public class Monster
{
  String type;
  String id;

  ...
}