JAX-RPC

Java API for XML-based RPC (JAX-RPC) 仕様により、SOAP ベースの相互運用可能で移植可能な Web サービスおよび Web サービス・クライアントを開発できます。JAX-RPC 1.1 は、Web サービスを Java™ プラットフォームで開発およびデプロイするためのコア API を提供しており、Web Services for Java Platform , Enterprise Edition (Java EE) プラットフォームの一部となっています。Java EE プラットフォームでは、移植可能な Web サービスを開発することができます。

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 インターフェースの間のマッピングを定義します。

JAX-RPC Web サービスは、JavaBeans またはエンタープライズ Bean 実装から作成することができます。Java インターフェースでリモート・メソッドを定義することによって、リモート・プロシージャーを指定することができます。 そのメソッドを実装する 1 つまたは複数のクラスをコードすることのみが 必要です。 残りのクラスとその他の成果物は、Web サービス・ベンダーのツールによって生成されます。以下は、Web サービス・インターフェースの例です。
package com.ibm.mybank.ejb;
import java.rmi.RemoteException;
import com.ibm.mybank.exception.InsufficientFundsException;
/**
		* Remote interface for エンタープライズ Bean: Transfer
	*/
public interface Transfer_SEI extends java.rmi.Remote {
						public void transferFunds(int fromAcctId, int toAcctId, float amount)
							throws java.rmi.RemoteException;

}
JAX-RPC のインターフェース定義は、特定の規則に従う必要があります。
  • インターフェースは、RMI のように java.rmi.Remote を拡張する必要があります。
  • メソッドは java.rmi.RemoteException を作成する必要があります。
  • メソッド・パラメーターは、リモート参照になることはできません。
  • メソッド・パラメーターは、 JAX-RPC 仕様でサポートされているパラメーターの 1 つでなければなりません。 以下に、サポートされているメソッド・パラメーターの例をリストします。 メソッド・パラメーターの完全なリストについては、 JAX-RPC 仕様を参照してください。
    • プリミティブ型: boolean、byte、double、float、short、int および long
    • プリミティブ型のオブジェクト・ラッパー: java.lang.Boolean、java.lang.Byte、java.lang.Double、java.lang.Float、java.lang.Integer、java.lang.Long、java.lang.Short
    • java.lang.String
    • java.lang.BigDecimal
    • java.lang.BigInteger
    • java.lang.Calendar
    • java.lang.Date
  • メソッドは、集約値オブジェクトに加え、前にリストした型のコンポジットから構成される値オブジェクトを取ることができます。

クライアントはスタブを作成し、それでメソッドを呼び出します。スタブは Web サービスのプロキシーのように機能します。クライアント・コードからは、ローカル・メソッド呼び出しのように見えます。 ただし、各メソッド呼び出しは、リモート・サーバーにマーシャルされます。 マーシャルは、SOAP プロトコルによって規定されるように XML でのメソッド呼び出しのエンコードを含みます。

以下は、Web サービスおよび Web サービス・クライアントを書き込むのに必要なキー・クラスおよびインターフェースです。
  • サービス・インターフェース: スタブまたは動的呼び出しおよ びメソッドを呼び出すのに使用されるプロキシー・オブジェクト用ファクトリー
  • ServiceFactory クラス: サービス用ファクトリー。
  • loadService

    loadService メソッドは WebSphere Application Server バージョン 6.0 で提供され、JAX-RPC 実装 が必要とするサービス・ロケーターを生成します。再呼び出しすると、旧バージョンでは、生成済みサービス・ロケーターを取得する特定の方法がありませんでした。 JNDI メソッドを使用してサービス・ロケーターを取得する管理対象クライ アントおよび管理対象外クライアントでは、 移植性を提供しない、IBM 固有のサービス・ロケーター ServiceLocator service=new ServiceLocator(...); をインスタンス化する必要がありました。 loadService パラメーターには、以下が含まれます。

    • wsdlDocumentLocation: サービスの WSDL 文書ロケーションの URL またはヌル。
    • serviceName: サービスの修飾名
    • properties: 生成されたサービス実装 クラスの場所を探索するのに役立つ実装固有の プロパティーのセット。
  • isUserInRole
    isUserInRole メソッド は、エンドポイント・インスタンスでの現行のメソッド呼び出し用の認証済 みユーザーが、特定の論理ロールに含まれているかどうかを示すブール値を戻します。
    • role: ロール・パラメーターは、ロールの名前を指定するストリングです。
  • サービス
  • 呼び出しインターフェース: 動的呼び出しに使用
  • スタブ・インターフェース: スタブ用基本インターフェース

スタブを使用して、Web サービス・プロバイダーにアクセスする場合、ほとんどの JAX-RPC API の詳細は隠されます。 クライアントは ServiceFactory (java.xml.rpc.ServiceFactory) を作成します。クライアントは、 ServiceFactory から サービス (java.xml.rpc.Service) をインスタンス化します。 サービスは、ポートを作成するファクトリー・オブジェクトです。 ポートは、Web サービスへのリモート・サービス・エンドポイント・インターフェースです。DII の場合、サービス・オブジェクトを使用して、 Web サービスのポート上にメソッドを呼び出すように構成できる呼び出しオブジェクトを作成します。

サポートされる標準および仕様の完全なリストについては、Web サービス仕様書および API 文書を参照してください。


トピックのタイプを示すアイコン 概念トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_jaxrpc
ファイル名:cwbs_jaxrpc.html