Menu Close

9.3. MTOM の有効化

デフォルトでは、Apache CXF ランタイムは MTOM サポートを有効にしません。これは、通常の SOAP メッセージの一部として、または最適化されていない添付ファイルとしてすべてのバイナリーデータを送信します。MTOM サポートを有効にするには、プログラムまたは設定を使用します。

9.3.1. JAX-WS API の使用

概要

サービスプロバイダーとコンシューマーの両方で、MTOM 最適化が有効になっている必要があります。JAX-WS API は、各型のエンドポイントに異なるメカニズムを提供します。

サービスプロバイダー

JAX-WS API を使用してサービスプロバイダーを公開した場合、以下のようにランタイムの MTOM サポートを有効にします。

  1. 公開されたサービスの Endpoint オブジェクトにアクセスします。

    Endpoint オブジェクトにアクセスするための最も簡単な方法として、エンドポイントをパブリッシュするときが挙げられます。詳細は 31章サービスの公開 を参照してください。

  2. 例9.4「エンドポイントからの SOAP バインディングの取得」 にあるように、getBinding() メソッドを使用して Endpoint から SOAP バインディングを取得します。

    例9.4 エンドポイントからの SOAP バインディングの取得

    // Endpoint ep is declared previously
    SOAPBinding binding = (SOAPBinding)ep.getBinding();

    MTOM プロパティーにアクセスするには、返されたバインディングオブジェクトを SOAPBinding オブジェクトにキャストする必要があります。

  3. 例9.5「サービスプロバイダーの MTOM が有効なプロパティーの設定」 に示されるように、バインディングの setMTOMEnabled() メソッドを使用してバインディングの MTOM enabled プロパティーを true に設定します。

    例9.5 サービスプロバイダーの MTOM が有効なプロパティーの設定

    binding.setMTOMEnabled(true);

コンシューマー

MTOM が JAX-WS コンシューマーを有効にするには、以下を行う必要があります。

  1. コンシューマーのプロキシーを BindingProvider オブジェクトにキャストします。

    コンシューマープロキシーを取得する方法は、25章WSDL コントラクトを使用しないコンシューマーの開発 または 28章WSDL コントラクトからのコンシューマーの開発 を参照してください。

  2. 例9.6「BindingProvider からの SOAP バインディングの取得」 にあるように、getBinding() メソッドを使用して BindingProvider から SOAP バインディングを取得します。

    例9.6 BindingProvider からの SOAP バインディングの取得

    // BindingProvider bp declared previously
    SOAPBinding binding = (SOAPBinding)bp.getBinding();
  3. 例9.7「コンシューマーの MTOM enabled プロパティーの設定」 にあるように、バインディングの setMTOMEnabled() メソッドを使用してバインディングの MTOM enabled プロパティーを true に設定します。

    例9.7 コンシューマーの MTOM enabled プロパティーの設定

    binding.setMTOMEnabled(true);