Menu Close

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>