WebSphere Application Server Version 6.1 Feature Pack for Web Services   
             オペレーティング・システム: AIX , HP-UX, i5/OS, Linux, Solaris, Windows, Windows Vista, z/OS

             目次と検索結果のパーソナライズ化
             New or updated topic for this feature pack

JAX-WS クライアント・プログラミング・モデル

Java API for XML-Based Web Services (JAX-WS) の Web サービス・クライアント・プログラミング・モデルは、ディスパッチ・クライアント API と動的プロキシー・クライアント API の両方をサポートします。ディスパッチ・クライアント API が動的クライアント・プログラミング・モデルであるのに対し、JAX-WS 用の静的クライアント・プログラミング・モデルは動的プロキシー・クライアントです。 ディスパッチ・クライアントおよび動的プロキシー・クライアントは、JAX-WS Web サービスの同期呼び出しと非同期呼び出しの両方を使用可能にします。

ディスパッチ・クライアント

XML ベースの Web サービスでは、Web サービスと Web サービス・クライアント間の通信に XML メッセージを使用します。 JAX-WS API では、Java メソッド呼び出しとそれと関連した XML メッセージ間の変換の詳細を簡素化し、非表示にするための、上位メソッドを提供します。 ただし、ユーザーは XML メッセージ・レベルで作業したい場合もあります。 このため、XML メッセージ・レベルでのサービス呼び出しが、ディスパッチ・クライアント API によりサポートされています。 ディスパッチ・クライアント API の javax.xml.ws.Dispatch は、動的 JAX-WS クライアント・プログラミング・インターフェースです。 ディスパッチ・クライアントを書き込むには、ディスパッチ・クライアント API、サポートされているオブジェクト・タイプ、そして関連の Web サービス記述言語 (WSDL) ファイルのメッセージ表記について、専門知識を身につける必要があります。ディスパッチ・クライアントはデータを MESSAGE モードか、PAYLOAD モードで送信できます。javax.xml.ws.Service.Mode.MESSAGE モードを使用する場合、ディスパッチ・クライアントは <soap:Envelope><soap:Header>、および <soap:Body> エレメントを含む、全 SOAP エンベロープの提供を受け持ちます。javax.xml.ws.Service.Mode.PAYLOAD モードを使用する場合は、ディスパッチ・クライアントは <soap:Body> の内容の提供のみを行い、 JAX-WS はペイロードを <soap:Envelope> エレメントに含めます。

ディスパッチ・クライアント API はアプリケーション・クライアントに対して XML としてメッセージやペイロードを構成するよう要求しますが、これにはメッセージやメッセージ・ペイロードに対する詳しい知識が必要です。 ディスパッチ・クライアントは以下のタイプのオブジェクトをサポートしています。
  • javax.xml.transform.Source: Source オブジェクトを使用して、クライアントが直接 XML API を使用できるようにします。Source オブジェクトは、SOAP バインディングまたは HTTP バインディングで使用できます。
  • JAXB オブジェクト: クライアントが XML スキーマから生成された JAXB オブジェクトを使用して JAX-WS アプリケーションで XML を作成および操作できるように、JAXB オブジェクトを使用します。 JAXB オブジェクトは SOAP バインディングまたは HTTP バインディングでのみ使用できます。
  • javax.xml.soap.SOAPMessage: クライアントが SOAP メッセージを操作できるように、SOAPMessage オブジェクトを使用します。 SOAP バインディングでのみ、SOAPMessage オブジェクトを使用できます。
  • javax.activation.DataSource: クライアントが Multipurpose Internet Mail Extension (MIME) メッセージを操作できるように、DataSource オブジェクトを使用します。 DataSource は、HTTP バインディングでのみ使用します。
例えば、入力パラメーター・タイプが javax.xml.transform.Source の場合、ディスパッチ・クライアント の呼び出しは、次のコード例のようになります。
Dispatch<Source> dispatch = … create a Dispatch<Source>
Source request = … create a Source object
Source response = dispatch.invoke(request);
ディスパッチ・パラメーター値によって invoke() メソッドの戻り値の型が決定します。
ディスパッチ・クライアントは次の 3 つの方法のいずれかで呼び出されます。
  • invoke メソッドを使用した要求および応答の同期呼び出し
  • コールバックまたはポーリング・オブジェクトを持つ invokeAsync メソッドを使用した、要求および応答の非同期呼び出し
  • invokeOneWay メソッドを使用した片方向呼び出し

ディスパッチ・クライアントの使用法について詳しくは、JAX-WS 2.0 仕様の第 4 章セクション 3 を参照してください。

動的プロキシー・クライアント

静的クライアントの JAX-WS 用のプログラミング・モデルは、動的プロキシー・クライアントと呼ばれます。 動的プロキシー・クライアントは、サービス・エンドポイント・インターフェース (SEI) (指定する必要があります) に基づいて Web サービスを呼び出します。 動的プロキシー・クライアントは、Java API for XML-based RPC (JAX-RPC) プログラミング・モデルのスタブ・クライアントに似ています。 JAX-WS 動的プロキシー・クライアントと JAX-RPC スタブ・クライアントはどちらも WSDL ファイルから生成されたサービス・エンドポイント・インターフェース (SEI) に基づいていますが、両者には大きな違いがあります。 動的プロキシー・クライアントは Java 5 動的プロキシー機能を使用して、ランタイムに動的に生成されるのに対して、JAX-RPC ベースのスタブ・クライアントはツールにより生成される、移植できない Java ファイルである点です。 JAX-RPC スタブ・クライアントとは異なり、動的プロキシー・クライアントでは別のベンダーのアプリケーション上でクライアントを実行する前に、スタブを再生成する必要がありません。これは、生成されるインターフェースに特定のベンダー情報が必要ないからです。

動的プロキシー・インスタンスは基本 Java ランタイム環境バージョン 5 で java.lang.reflect.Proxy クラスを拡張し、動的プロキシー機能を利用します。 クライアント・アプリケーションは次に、ランタイムが SEI を表す Java オブジェクトを動的に作成している間に、プロキシー・インスタンスを作成するのに使用されるインターフェースを提供します。

動的プロキシー・クライアントは次の 3 つの方法のいずれかで呼び出されます。
  • invoke メソッドを使用した要求および応答の同期呼び出し
  • コールバックまたはポーリング・オブジェクトを持つ invokeAsync メソッドを使用した、要求および応答の非同期呼び出し
  • invokeOneWay メソッドを使用した片方向呼び出し

動的プロキシー・クライアントの使用法について詳しくは、JAX-WS 2.0 仕様の第 4 章を参照してください。




関連概念
JAX-WS
関連タスク
Web サービス・クライアントの開発とデプロイ
WSDL ファイルからの JAX-WS クライアントの開発
JAX-WS Web サービスの非同期呼び出し
関連資料
Web サービス仕様書と API
関連情報
Java API for XML Web Services (JAX-WS) API documentation
Java API for XML Web Services (JAX-WS) API User's Guide documentation
概念トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 4:10:06 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.wsfep.multiplatform.doc/info/ae/ae/cwbs_jaxwsclients.html