Application Serverでサポートしているjavax.xml.ws.Dispatchインタフェース,JAX-WS 2.2仕様,JAXB 2.2仕様,およびSAAJ 1.3仕様などのAPIを使用して開発してください。
ディスパッチベースのWebサービスクライアントの実装例を次に示します。
package com.example.sample.client; |
プロバイダ実装クラスから送信されたSOAPフォルトをWebサービスクライアントの実装で利用する場合は,try-catchブロック内でinvoke()メソッドを呼び出し,javax.xml.ws.soap.SOAPFaultException例外を取得します。SOAPフォルトも,javax.xml.ws.soap.SOAPFaultException例外から取得できます。実装例を次に示します。
package com.example.sample.client; |
接続するWebサービスのURL(エンドポイントアドレス)は,メッセージコンテキストのjavax.xml.ws.service.endpoint.addressプロパティで指定および変更できます。エンドポイントアドレスを指定・変更する例については,「3.6.1(5)(c) ポートのメソッドを呼び出す」を参照してください。
サービスクラスおよびディスパッチの生成には処理コストが掛かるので,一度生成したサービスクラスおよびディスパッチは再利用することをお勧めします。ポートを追加したりディスパッチを生成したりするためにサービスクラスを複数回生成する必要はありません。同様に,ディスパッチのinvokeメソッドを複数回呼び出すためにディスパッチを複数回取得する必要はありません。ただし,複数スレッドでディスパッチを共有する場合,共有するディスパッチの要求コンテキストのプロパティに対する変更は,複数スレッドが動作する前に実行してください。複数スレッドの動作中に変更すると,通信が失敗したり,不正なSOAPメッセージが送信されたりすることがあります。
WebサービスクライアントをサーブレットやEJBなどで実装する場合は,それぞれの初期化メソッドでサービスクラスおよびディスパッチを取得し,再利用することをお勧めします。ディスパッチの要求コンテキストのプロパティに対する変更も,それぞれの初期化メソッドで実行してください。