JAX-RPC

Java API for XML-based RPC (JAX-RPC) 仕様により、SOAP ベースの相互運用可能で移植可能な Web サービスおよび Web サービス・クライアントを開発できます。 JAX-RPC 1.1 Java™プラットフォーム上でWebサービスを開発および展開するためのコアAPIを提供し、Web Services for Java Platform, Enterprise Edition( Java EE ) プラットホーム。 のJava EEプラットフォームを使用すると、ポータブルな Web サービスを開発できます。

WebSphere® Application ServerJAX-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 は、WSDL ポート タイプと Java インターフェイス、および Java 言語と Extensible Markup Language (XML) スキーマ タイプ間のマッピングを定義します。

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 Enterprise 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 )。クライアントはService(java.xml.rpc.Service ) からServiceFactory。 サービスは、ポートを作成するファクトリー・オブジェクトです。 ポートは、Web サービスへのリモート・サービス・エンドポイント・インターフェースです。 DII の場合、サービス・オブジェクトを使用して、 Web サービスのポート上にメソッドを呼び出すように構成できる呼び出しオブジェクトを作成します。

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