WebSphere Application Server - Express, Version 6.0.x   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows

             目次と検索結果のパーソナライズ化

Apache SOAP Web サービスから Web Services for J2EE 標準へのマイグレーション

Apache SOAP を使用して開発された Web サービスを、 Web Services for Java 2 Platform, Enterprise Edition (J2EE) 仕様に基づいて開発された Web サービスに マイグレーションすることができます。

始める前に

Apache SOAP に基づいた Web サービスを使用していて、Java ベースの Web サービス を開発およびインプリメントする必要が生じた場合は、すべてのバージョン 4.0、および 5.0.2 より前のバージョン 5.0 を使用して開発したクライアント・アプリケーションをマイグレーションする必要があります。

このタスクについて

以下の手順で、Java 標準に従ってこれらのクライアント・アプリケーションをマイグレーションします。

プロシージャー

  1. マイグレーション戦略の計画を立てます。 Apache SOAP クライアントを、Java API for XML-based RPC (JAX-RPC) の Web サービス・クライアントに 移植する方法は、2 つあります。
    • そのサービスに Web サービス記述言語 (WSDL) ドキュメントがある、あるいは作成することができる場合は、Web サービスをバインディングするために WSDL2Java コマンド・ツールの使用を検討してください。 生成された JAX-RPC バインディングを使用するように Apache SOAP クライアントを 変更するには余計に手間が掛かりますが、その結果生成されたクライアント・コード はより耐久性があり保守が簡単になります。

      この方法に関する詳細は、インフォメーション・センターの Web サービス・クライアントの開発に関する項目を参照してください。

    • そのサービスに WSDL ドキュメントがなく、サービスを変更せずに 、Apache SOAP クライアントを必要最低限の作業で移植したい場合は、Apache SOAP API と同様の JAX-RPC 動的起動インターフェース (DII) を使用するようにコードを 変換することができます。DII API は、WSDL または生成されたバインディングを 使用しません。
    JAX-RPC はユーザー作成のシリアライザーでフレームワークを指定 しないため、JAX-RPC はカスタム・シリアライザーの使用をサポートしません。 アプリケーションが WebSphere Application Server でサポートされている Java、WSDL、または XML テクノロジー間のデフォルトの マッピングに準拠していない場合は、アプリケーションをマイグレーションしないでください。 これ以降のステップでは、JAX-RPC 動的起動インターフェース (DII) API の使用を前提としています。
  2. GetQuote サンプルを検討します サンプル・ギャラリーで、Web サービス・マイグレーションのサンプルを入手できます。 このサンプルは GetQuote.java ファイルにあり、当初は Apache SOAP ユーザー用に 作成されたものです。このサンプルには、JAX-RPC DII インターフェースにマイグレーションするために必要 な変更に関する説明も記述されています。
  3. クライアント・アプリケーションを Apache SOAP から JAX-RPC DII に変換します。 Apache SOAP API と JAX-RPC DII API の構造は似ています。いずれの場合にも、 Call オブジェクトのインスタンス化および構成、パラメーターのセットアップ、 オペレーションの起動、および結果の処理を行うことができます。 JAX-RPC では、以下のコマンドを使用して、サービス・オブジェクトの汎用インスタンスを作成できます。
    javax.xml.rpc.Service service = ServiceFactory.newInstance().createService(new QName(""));
    1. Call オブジェクトを作成します。 Call オブジェクトのインスタンスは次のコードを使用して作成されます。
      org.apache.soap.rpc.Call call = new org.apache.soap.rpc.Call ()
      JAX-RPC では、以下のコードを使用して、Call オブジェクトのインスタンスを作成します。
      java.xml.rpc.Call call = service.createCall();
    2. エンドポイント Uniform Resource Identifiers (URI) を設定します。 操作の宛先 URI はパラメーターとして以下に受け渡されます。
      call.invoke:  call.invoke("http://...", "");
      JAX-RPC では、setTargetEndpointAddress メソッドが次のようにパラメーターとして使用されます。
      call.setTargetEndpointAddress("http://...");

      Apache SOAP には、要求に対するルーティング情報を含む Call オブジェクトの setTargetObjectURI メソッドが含 まれます。JAX-RPC には同等のメソッドはありません。targetObjectURI にある情報は、JAX-RPC では targetEndpoint URI に含まれています。

    3. オペレーション名を設定します。 オペレーション名は以下を使用して Call オブジェクトに構成されます。
      call.setMethodName("opName");
      JAX-RPC では、以下のように String パラメーターの代わりに QName を受け取る setOperationName メソッドが使用されます。
      call.setOperationName(new javax.xml.namespace.Qname("namespace", "opName"));
    4. エンコード・スタイルを設定します。 エンコード・スタイルは、以下を使用して Call オブジェクトに構成されます。
      call.setEncodingStyleURI(org.apache.soap.Constants.NS_URI_SOAP_ENC);
      JAX-RPC では、エンコード・スタイルは、Call オブジェクトのプロパティー、
      call.setProperty(javax.xml.rpc.Call.ENCODINGSTYLE_URI_PROPERTY, "http://schemas.
      xmlsoap.org/soap/encoding/");
      によって設定されます。
    5. パラメーターを宣言し、パラメーター値を設定します。 Apache SOAP パラメーターのタイプおよび値は、パラメーター・インスタンスによって記述されます。このパラメーター・インスタンスは、Vector に収集され、 呼び出しの前に Call オブジェクトで設定されます。以下に例を示します。
      Vector params = new Vector (); 
      params.addElement (new org.apache.soap.rpc.Parameter(name, type, value, encodingURI)); 
      // repeat for additional parameters... call.setParams (params);
      JAX-RPC では、Call オブジェクトは、パラメーター名およびタイプで構成されます。これらのパラメーター名およびタイプの値は指定しません。以下に例を示します。
      call.addParameter(name, xmlType, mode); 
      // repeat for additional parameters call.setReturnType(type);
      各部の意味は、次のとおりです。
      • name (タイプ java.lang.String) パラメーター名です
      • xmlType (タイプ javax.xml.namespace.QName) パラメ ーターの XML タイプです
      • mode (タイプ javax.xml.rpc.ParameterMode) パラメーターのモード、例えば IN、OUT、または INOUT などです
    6. 呼び出しを実行します。 オペレーションは、以下を使用して Call オブジェクトに呼び出されます。
      org.apache.soap.Response resp = call.invoke(endpointURI, "");
      JAX-RPC では、以下の例のようにパラメーター値を配列に収集し、call.invoke に渡します:
      Object resp = call.invoke(new Object[] {parm1, parm2,...});
    7. 障害がないか検査します。 Apache SOAP では、以下のように応答をチェックして、呼び出し時に SOAP 障害がないか検査します。
      if resp.generatedFault then {
      org.apache.soap.Fault f = resp.getFault;   
      f.getFaultCode();   
      f.getFaultString(); 
      }
      JAX-RPC では、呼び出し時に SOAP 障害が起きると java.rmi.RemoteException エラー が表示されます。
      try {
      ... call.invoke(...) 
       } catch (java.rmi.RemoteException) ...
    8. 結果を検索します。 Apache SOAP では、呼び出しが正常に行われ、結果が戻ってきた場合、 以下のように応答オブジェクトから結果を検索することができます。
      Parameter result = resp.getReturnValue(); return result.getValue();
      JAX-RPC では、例外が表示されない場合は、以下のように呼び出しの結果が戻りオブジェクトになります。
      Object result = call.invoke(...);
       ... 
      return result;
      

結果

Apache SOAP Web サービスが J2EE Web サービスにマイグレーションされました。

次の作業

Web サービス・クライアントを開発します。 このトピックでは、Web Services for J2EE 仕様に基づいて Web サービス・クライアントを開発する方法について説明します。

Web サービス対応クライアントをテストして、マイグレーション・プロセスが正常に行われており、J2EE 環境に Web サービスをインプリメントできることを確認してください。




関連タスク
Web サービス・クライアントの開発とデプロイ
Web サービス対応クライアントのテスト
関連資料
JAX-RPC アプリケーション用の WSDL2Java コマンド
JAX-RPC アプリケーションの Java 言語、WSDL、および XML 間のマッピング
タスク・トピック    

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

最終更新: Jan 21, 2008 11:31:28 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/twbs_migratewbs.html