19.2.3. クライアント側のハンドラ設定

XTS では、特定のAPIを使ってトランザクショナルなWeb Services で呼出しを実行する場合クライアントアプリケーションを必要としません。クライアントは該当のAPI をどれでも利用でき、SOAPメッセージをサーバーに送信しSOAPのレスポンスを受信できます。クライアント側に課される要件は、以下のみとなっています。
  • Web サービスを呼び出す際に現在のトランザクション詳細をサーバーに転送する必要があります。
  • サーバーからのレスポンスを正しいトランザクションのコンテキストで処理する必要があります。
これを達成するには、クライアントは現在のXTSコンテキストの詳細を送信SOAPメッセージのヘッダーに挿入し、受信メッセージのヘッダからコンテキストの詳細を抽出しこのコンテキストと現在のスレッドを関連づける必要があります。このプロセスを簡素化するには、XTSモジュールは、このタスクを自動で実行できるハンドラを含みます。これらのハンドラはJAX-WSクライアントと機能できるよう設計されています。

注記

ビジネスサービスの呼出しに別のSOAPクライアント/サーバーインフラストラクチャを選んだ場合、ヘッダー処理を提供する必要があります。XTS はインターセプタあるいはJAX-WSのみを提供します。1.0 実装にのみJAX-RPCハンドラは提供されています。

19.2.3.1. JAX-WSクライアントコンテキストハンドラ

JAX-WSクライアント側のコンテキストハンドラを登録するには、クライアントアプリケーションはjavax.xml.ws.BindingProviderjavax.xml.ws.Bindingにより提供されるAPIを使用して、リモートエンドポントを呼び出すためのサービスプロキシ上にハンドラチェーンをインストールします。例についてはsrc/com/jboss/jbosstm/xts/demo/BasicClient.javaファイルにあるアプリケーションクライアント実装例を参照してください。
アプリケーションでデプロイした設定ファイルを使いハンドラを指定することができます。このファイルを特定するには、インターフェースクラスにjavax.jws.HandlerChain アノテーションを添付し、JAX-WSクライアントAPIを宣言します。このインターフェースは通常、Web サービスのWSDLポート定義から生成されます。
JAX-WS クライアントのコンテキストハンドラを登録する際にcom.arjuna.mw.wst11.client.JaxWSHeaderContextProcessor をインスタンス化する必要があります。