Java API for XML-based RPC (JAX-RPC) 仕様を使用すると、 SOAP ベースの対話式で移植可能な Web サービス、および Web サービス・クライアントを開発できます。JAX-RPC 1.1 は、 Web サービスを Java プラットフォームで開発およびデプロイするためのコア API を 提供しているため、J2EE 1.4 プラットフォームの必要なパーツです。 J2EE 1.4 プラットフォームでは、移植可能な Web サービスを開発することができます。 Web サービスは、J2EE 1.3 コンテナーでも開発およびデプロイすることができます。
WebSphere Application Server は JAX-RPC 1.1 標準をインプリメントします。
JAX-RPC 標準は、Java 言語で Web サービス用の Web サービス記述言語 (WSDL) を使用するための プログラミング・モデルとバインディングをカバーします。 JAX-RPC は、SOAP 通信の基礎にある複雑さを防ぐことによって、Web サービスの開発を単純化します。
表面的には、JAX-RPC はリモート・メソッド呼び出し (RMI) の別のイ ンスタンス生成のように見えます。基本的に、 Web サービス・プロバイダーが別の場所にあったとしても、 JAX-RPC によって、クライアントは、Web サービスがクライアントのアドレ ス・スペースにマップされたローカル・オブジェクトであるかのように、Web サービスにアクセスすることができます。 JAX-RPC は、通常は HTTP の上部に乗る XML ベース・プロトコル SOAP を使用して行われます。
JAX-RPC では、Java 言語と Extensible Markup Language (XML) スキ ーマ・タイプとのマッピングのほか WSDL ポート・タイプと Java インターフェースとのマッピングも定義しています。
package com.ibm.mybank.ejb; import java.rmi.RemoteException; import com.ibm.mybank.exception.InsufficientFundsException; /** * Remote interface for Enterprise Bean: Transfer */ public interface Transfer_SEI extends java.rmi.Remote { public void transferFunds(int fromAcctId, int toAcctId, float amount) throws java.rmi.RemoteException; }
クライアントはスタブを作成し、それでメソッドを呼び出します。スタブは Web サービスのプロキシ ーのように機能します。 クライアント・コードからは、ローカル・メソッド呼び出しのように見えます。 ただし、各メソッド呼び出しは、リモート・サーバーにマーシャルされます。 マーシャルは、SOAP プロトコルによって規定されるように XML でのメソッド呼び出しのエンコードを含みます。
loadService メソッドは WebSphere Application Server バージョン 6.0 で提供され、JAX-RPC イン プリメンテーションが必要とするサービス・ロケーターを生成します。 再呼び出しすると、旧バージョンでは、生成済みサービス・ロケーターを取得する特定の方法がありませんでした。 JNDI メソッドを使用してサービス・ロケーターを取得する管理対象クライ アントおよび管理対象外クライアントでは、 移植性を提供しない、IBM 固有のサービス・ロケーター ServiceLocator service=new ServiceLocator(...); をインスタンス化する必要がありました。 loadService パラメーターには、以下が含まれます。
スタブを使用して、Web サービス・プロバイダーにアクセスする場合、 ほとんどの JAX-RPC API の詳細は隠されます。 クライアントは ServiceFactory (java.xml.rpc.ServiceFactory) を作成します。クライアントは、 ServiceFactory から サービス (java.xml.rpc.Service) をインスタンス化します。 サービスは、ポートを作成するファクトリー・オブジェクトです。 ポートは、Web サービスへのリモート・サービス・エンドポイント・インターフェースです。 DII の場合、サービス・オブジェクトを使用して、 Web サービスのポート上にメソッドを呼び出すように構成できる呼び出しオブジェクトを作成します。
API の完全なリストについては、API documentation を参照してください。 また、Web サービス: 学習用リソースにある Web サービスの開発についての項目も検討します。