9.3. MTOM の有効化
デフォルトでは、Apache CXF ランタイムは MTOM サポートを有効にしません。通常の SOAP メッセージの一部として、または最適化されていない添付ファイルとしてすべてのバイナリーデータを送信します。MTOM サポートは、プログラムを用いて、または設定を使用してアクティベートできます。
9.3.1. JAX-WS API の使用
概要
サービスプロバイダーとコンシューマーの両方で、MTOM の最適化を有効にする必要があります。JAX-WS API は、各タイプのエンドポイントに異なるメカニズムを提供します。
Service provider
JAX-WS API を使用してサービスプロバイダーを公開した場合は、以下のようにランタイムの MTOM サポートを有効にします。
公開されたサービスの
Endpoint
オブジェクトにアクセスします。Endpoint
オブジェクトにアクセスするための最も簡単な方法として、エンドポイントをパブリッシュするときが挙げられます。詳細は、31章サービスの公開 を参照してください。例9.4「エンドポイントからの SOAP バインディングの取得」 で示すように、
getBinding()
メソッドを使用してEndpoint
から SOAP バインディングを取得します。例9.4 エンドポイントからの SOAP バインディングの取得
// Endpoint ep is declared previously SOAPBinding binding = (SOAPBinding)ep.getBinding();
MTOM プロパティーにアクセスするには、返されたバインディングオブジェクトを
SOAPBinding
オブジェクトにキャストする必要があります。例9.5「サービスプロバイダーの MTOM 有効プロパティーの設定」 に示されるように、バインディングの
setMTOMEnabled()
メソッドを使用して、バインディングの MTOM enabled プロパティーをtrue
に設定します。例9.5 サービスプロバイダーの MTOM 有効プロパティーの設定
binding.setMTOMEnabled(true);
コンシューマー
MTOM で JAX-WS コンシューマーを有効にするには、以下を行う必要があります。
コンシューマーのプロキシーを
BindingProvider
オブジェクトにキャストします。コンシューマープロキシーの取得は、25章WSDL コントラクトなしでコンシューマーの開発 または 28章WSDL コントラクトからのコンシューマーの開発 を参照してください。
例9.6「
BindingProvider
からの SOAP バインディングの取得」 で示すように、getBinding()
メソッドを使用してBindingProvider
から SOAP バインディングを取得します。例9.6
BindingProvider
からの SOAP バインディングの取得// BindingProvider bp declared previously SOAPBinding binding = (SOAPBinding)bp.getBinding();
例9.7「コンシューマーの MTOM 有効プロパティーの設定」 に示されるように、バインディングの
setMTOMEnabled()
メソッドを使用して、バインディングの MTOM enabled プロパティーをtrue
に設定します。例9.7 コンシューマーの MTOM 有効プロパティーの設定
binding.setMTOMEnabled(true);