43.10.2. Spring の設定

概要

ハンドラーチェーンを使用するようにエンドポイントを設定する最も簡単な方法は、エンドポイントの設定でチェーンを定義することです。これは、jaxwxs:handlers 子要素をエンドポイントを設定する要素に追加して行います。

重要

設定ファイルを介して追加されたハンドラーチェーンは、プログラムで設定されたハンドラーチェーンよりも優先されます。

手順

ハンドラーチェーンをロードするようにエンドポイントを設定するには、次のようにします。

  1. エンドポイントに設定要素がまだない場合は、設定要素を追加します。

    Apache CXF エンドポイントの設定の詳細については、17章JAX-WS エンドポイントの設定 を参照してください。

  2. jaxws:handlers 子要素をエンドポイントの設定要素に追加します。
  3. チェーンの各ハンドラーに対して、ハンドラーを実装するクラスを指定する bean 要素を追加します。

    ハンドラー実装が複数の場所で使用される場合は、ref 要素を使用して bean 要素を参照できます。

ハンドラー要素

jaxws:handlers 要素は、エンドポイントの設定でハンドラーチェーンを定義します。これは、すべての JAX-WS エンドポイント設定要素の子として表示できます。以下のとおりです。

  • jaxws:endpoint はサービスプロバイダーを設定します。
  • jaxws:server もサービスプロバイダーを設定します。
  • jaxws:client はサービスコンシューマーを設定します。

次の 2 つの方法のいずれかで、ハンドラーをハンドラーチェーンに追加します。

  • 実装クラスを定義する bean 要素を追加する
  • ref 要素を使用して、設定ファイルの他の場所から名前付き bean 要素を参照する

設定でハンドラーが定義される順序は、ハンドラーが実行される順序です。論理ハンドラーとプロトコルハンドラーを混在させると、順序が変更される場合があります。ランタイムは、設定で指定された基本的な順序を維持しながら、それらを適切な順序にソートします。

例43.17「Spring でハンドラーチェーンを使用するようにエンドポイントを設定する」 は、ハンドラーチェーンをロードするサービスプロバイダーの設定を示しています。

例43.17 Spring でハンドラーチェーンを使用するようにエンドポイントを設定する

<beans ...
  xmlns:jaxws="http://cxf.apache.org/jaxws"
  ...
  schemaLocation="...
    http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
    ...">
  <jaxws:endpoint id="HandlerExample"
                  implementor="org.apache.cxf.example.DemoImpl"
                  address="http://localhost:8080/demo">
    <jaxws:handlers> <bean class="demo.handlers.common.LoggingHandler" /> <bean class="demo.handlers.common.AddHeaderHandler" /> </jaxws:handlers>
  </jaws:endpoint>
</beans>