Web Services for Java 2 Platform, Enterprise Edition (J2EE) 仕様と、サポートされる Web サービス開発プログラミング・モデルに基づいて Web サービス・クライアントを開発できます。
JAX-WS Web サービスのアクセスと呼び出しの両方ができる Web サービス・クライアントは、 Web Services for Java 2 Platform, Enterprise Edition (J2EE) 仕様に基づいて開発されます。 Feature Pack for Web Services は、Enterprise JavaBeans (EJB) クライアント、J2EE アプリケーション・クライアント、JavaServer Pages (JSP) ファイルおよびサーブレットをサポートします。 JAX-RPC 仕様に基づく Web サービス・クライアントは、 Web サービス記述言語 (WSDL) ファイルが Web Services-Interoperability (WS-I) Basic Profile に準拠している場合は、JAX-WS ベースの Web サービスを呼び出すことができます。 Feature Pack for Web Services は、管理対象外クライアントが Java 2 Platform, Enterprise Edition (J2EE) コンテナーで実行されている場合でも、管理対象外クライアントのみをサポートします。 管理対象外クライアントは、コンテナー管理サービスを使用しないクライアントです。 これらのクライアントは、JSR-109 Web サービス・クライアント・デプロイメント情報を含まない Java アーカイブ (JAR) ファイルとしてパッケージされています。 J2EE コンテナーで実行される Web サービスの管理対象外クライアントは、 サービスのインストールを管理する J2EE コンテナーに代わり、サービスのインスタンス生成を担当します。
JAX-WS Web サービス・クライアント・プログラミング・モデルは、ディスパッチ・クライアント API と、動的プロキシー・クライアント API の両方をサポートします。 ディスパッチ・クライアント API が動的クライアント・プログラミング・モデルであるのに対して、 動的プロキシー・クライアントは JAX-WS の静的クライアント・プログラミング・モデルです。 ディスパッチおよび動的プロキシー・クライアントは、 JAX-WS Web サービスの同期呼び出しと非同期呼び出しの両方を使用可能にします。 ディスパッチ・クライアント API の javax.xml.ws.Dispatch は、 XML メッセージング指向クライアントで、XML 構成体の使用を好む上級 XML 開発者向けです。 ディスパッチ API は、PAYLOAD モードまたは MESSAGE モードのいずれかでデータを送信できます。 PAYLOAD モードを使用する場合、ディスパッチ・クライアントは soap:Body の内容の提供を担当します。 さらに、JAX-WS には soap:Envelope エレメントのペイロードが含まれています。 MESSAGE モードを使用する場合、 ディスパッチ・クライアントは SOAP エンベロープ全体の提供を担当します。 動的プロキシー・クライアントは、提供されるサービス・エンドポイント・インターフェース (SEI) に基づく Web サービスを呼び出します。 JAX-WS 動的プロキシー・インスタンスは、 基本 Java Runtime Environment バージョン 5 の動的プロキシー機能を活用します。
JAX-WS プログラミング・モデルに基づいた Web サービス・クライアントを開発するには、 Web サービス・アプリケーションのニーズに最適なクライアント・モデルを決定する必要があります。 Java 抽象の代わりに XML を直接操作し、メッセージ構造またはメッセージ・ペイロード構造のいずれかを操作する場合は、ディスパッチ API を使用して 動的 Web サービス・クライアントを開発します。 Web サービス・クライアントに、サービス・エンドポイント・インターフェースに基づくサービスを動的プロキシーを使用して呼び出させる場合は、 動的プロキシー API を使用して静的 Web サービス・クライアントを開発します。 プロキシーが作成された後、クライアント・アプリケーションは、 サービス・エンドポイント・インターフェースの標準実装のように、これらのプロキシーでメソッドを呼び出すことができます。 本書では、WSDL ファイルで開始する静的 Web サービス・クライアントを開発する方法について以降で説明します。
静的または動的 JAX-WS クライアントを使用して Web サービスを非同期に呼び出すには、 実装するのがコールバック・モデルであるのか、ポーリング・モデルであるのかを決定します。 Web サービス・クライアントに対する非同期コールバックまたはポーリングの実装について詳しくは、 JAX-WS Web サービスの非同期呼び出しを参照してください。 サービスおよびクライアントに関する JAX-WS プログラミング・モデルでは、アノテーションを使用して、 ベンダー中立の方法で JAX-RPC クライアント・バインディングで提供された同一情報を表します。
J2EE 用 Web サービスのクライアントは Java Specification Requirements (JSR) 109 により定義され、管理対象クライアントと呼ばれます。これは、これらのクライアントが J2EE コンテナー内で稼働するためです。 これらのクライアントは、エンタープライズ・アーカイブ (EAR) ファイルとしてパッケージされており、サービス要求元として動作するコンポーネントが含まれています。 こうしたコンポーネントは J2EE クライアント・アプリケーションであっても、サーブレットや JavaServer Pages (JSP) のような Web コンポーネントであっても、またはセッション Enterprise JavaBeans (EJB) であってもかまいません。 Web サービスの管理対象クライアントでは JSR 109 API とデプロイメント情報を使用して Web サービスを検索し、呼び出します。
J2EE コンテナー内で稼働せずに、JAX-RPC ランタイムを使用して Web サービスを呼び出す J2SE クライアントは、管理対象外クライアントと呼ばれます。 Web サービスの管理対象外クライアントは、WSDL ファイルを直接検査し、JAX-RPC API を直接使用して Web サービスの呼び出しを作成することができる、独立型の Java クライアントです。これらのクライアントは、どのようなデプロイメント情報も含まない JAR ファイルとしてパッケージされます。
Web サービス・アプリケーション・クライアントを開発し、そのクライアントが静的にバインドされた後、 インプリメンテーションで使用されるサービス・エンドポイントは、開発プロセス中に使用した WSDL ファイルで識別されるものとなります。 Web サービス・アプリケーションのインストール中、またはインストール後に、 サービス・エンドポイントの変更が必要になる場合があります。管理対象クライアントの場合、 エンドポイントは、管理コンソールまたは wsadmin スクリプト・ツールを使用して変更できます。 管理対象外の JAX-WS Web サービス・クライアントの場合、 エンドポイントは、クライアント・アプリケーション内から変更できます。