exteNd Workbench 4.1
コアヘルプ

 

    First Previous Next Last チュートリアル : WEBサービスの操作  05/19/03 09:50:45 

レッスン 3    Webサービスのクライアントアプリケーションの作成

 
Top of page

学習する内容

Webサービスを操作する場合には、次の2つの基本的な役割があります。

レッスン 2, Webサービスの作成では、プロバイダとしての役割で、Calculator Webサービスを配備しました。 このレッスンでは、サービスコンシューマとしての役割で、Web Serviceウィザードを使用してCalculator Webサービスを呼び出すコードを生成します。

このレッスンでは、 レッスン 2, Webサービスの作成で開始点として生成されたWSDLを使用します。 必要なコードの大部分は、そのレッスンですでに生成されていますが、このレッスンではWebサービスのソースコードがなく、WSDL (Web Services Description Language)形式の記述子ファイルのみがあるという前提で解説していきます。

学習内容は次のとおりです。

 
Top of section

実行する内容

  1. プロジェクトディレクトリをセットアップし、WSDLファイルを取得する

  2. 新しいプロジェクトを作成する

  3. プロジェクト作成用のクラスパスを設定する

  4. WSDLからクライアントコードを生成する

  5. テストクライアントコードを編集する

  6. 生成したクライアントを使用してWebサービスをテストする

所要時間   約15分

注記:   このレッスンでは、 レッスン 2, Webサービスの作成を完了し、Calculator Webサービスを配備したと想定しています。 このプロジェクトをテストする際には、Calculator Webサービスの配備先となるJ2EEアプリケーションサーバが実行されている必要があります。

 
Top of page

Webサービスについての情報の取得

WSDL (Web Services Description Language)は、配備したWebサービスについての情報を交換する標準的な方法です。 WSDLファイルは、Webサービスのメソッド、データタイプ、およびURLを指定するXMLドキュメントです。 これにより、抽象的で再使用可能な方法でサービスを記述できます。

WSDLファイルを取得するには、次のようないくつかのシナリオがあります。

WebサービスのWSDLファイルを取得すると、WorkbenchのWeb Serviceウィザードを使用して、サービスを呼び出すクライアントコードを生成できます。 生成したファイルには、テスト用のリモートインタフェース、サービスクラス、スタブ、およびクライアントプログラムが含まれます。

Calculator Webサービス   このレッスンでは、別の開発者またはビジネスからCalculator WebサービスのWSDLファイルを取得したと想定します。 実際には、このファイルは レッスン 2, Webサービスの作成で生成しています。

 
Top of page

プロジェクトのセットアップ

作成するクライアントプログラムは、単純なJavaプログラムであり、アーカイブに保存されたJ2EEアプリケーションではありません。 Workbenchでは、アーカイブタイプを選択する必要があるため、JARプロジェクトを選択します。 アプリケーションを実行すると、コマンドラインまたは[Client Runner]ウィンドウのいずれかを使用できます。 アーカイブを作成して配備する必要はなく、単にファイルをコンパイルします。

 
Top of section

エクササイズ 3-1: プロジェクトディレクトリをセットアップし、WSDLファイルを取得する

  1. ご使用のオペレーティングシステムのツールを使用して、CalculatorClientというプロジェクトのルートディレクトリを作成します。 ディスクドライブのルートレベル、または選択したサブディレクトリに配置できます。 このチュートリアルのサンプルパスでは、WorkbenchProjectsディレクトリにCalculatorClientを作成したことを想定しています。 Windowsでは、次のようになります。

      c:\WorkbenchProjects\CalculatorClient
    
  2. CalculatorClientディレクトリにファイルCalculatorImplWS.wsdlをコピーします。 このファイルは、c:\WorkbenchProjects\CalculatorWS\srcなどのように、 レッスン 2, Webサービスの作成でのプロジェクトのsrcディレクトリにあります。

    注記:   また、Workbench-install-directory\docs\tutorial\TutorialFiles\webservicesからもこのファイルを取得できます。 その場合、ファイルを開き、ファイルの最後のsoap:address要素でURLを編集し、Calculator Webサービスの配備先となるURLを指定することが大切です。

 
Top of section

エクササイズ 3-2: 新しいプロジェクトを作成する

このエクササイズでは、Workbenchを起動しNew Projectウィザードを使用して、Calculator Webサービスを使用するクライアントアプリケーションのプロジェクトを作成します。

  1. Workbenchを開始します。 Windowsの[スタート]メニューからNovell exteNd Workbenchのショートカットを使用できます。またはWorkbenchがすでに実行されており、プロジェクトが開いている場合は、メニューから[File]>[Close Project]の順に選択します。 開いているファイルを閉じるよう求められた場合、[Yes]をクリックします。

  2. メニューから[File]>[New Project]の順に選択します。

  3. New Projectウィザードで、[JAR]を選択してから[OK]をクリックします。

    tut3-2NewProject

  4. 次のパネルの[Project Name]テキストボックスに、「CalculatorClient」と入力します。

  5. [Project Location]テキストボックス横の省略記号をクリックして、 エクササイズ 3-1: プロジェクトディレクトリをセットアップし、WSDLファイルを取得するで作成したCalculatorClientディレクトリを選択します。 [OK]をクリックすると、パネルの残りのフィールドが自動的に記入されます。

    tut3-2NewProjectDialog

  6. Next]をクリックし、最初のパネルでプロジェクト仕様をチェックしてから、[Finish]をクリックします。

    ナビゲーションペインで、[Project]タブに新しいプロジェクトが表示されます。

 
Top of section

エクササイズ 3-3: プロジェクト作成用のクラスパスを設定する

このエクササイズでは、[Project Settings]ダイアログボックスを使用してコンパイル時のクラスパスを指定します。 WebサービスおよびWebサービスクライアントでは、クラスパスにjbroker-web.jarおよびいくつかのサポートJARを含める必要があります。

  1. プロジェクトを開き、メニューから[Project]>[Project Settings]の順に選択します。

  2. Classpath/Dependencies]タブを選択します。

  3. Add Entry]ボタンをクリックします。

  4. [Add to Classpath]ダイアログボックスで、Workbench-install-directory/compilelibディレクトリに移動します。 次のファイルを選択して、[Open]、[OK]の順にクリックします。

    これで、[Classpath/Dependencies]タブは、次のようになります。

    tut3-3Classpath

  5. OK]をクリックして、[Project Settings]ダイアログボックスを閉じます。

 
Top of page

WSDLからのクライアントコードの生成

レッスン 2, Webサービスの作成では、Javaクラスで開始して、新しいWebサービスを作成しました。 ここでは、既存のWebサービスを表すWSDLファイルで開始します。

 
Top of section

エクササイズ 3-4: WSDLからクライアントコードを生成する

  1. Workbenchでプロジェクトを開き、メニューから[File]>[New]の順に選択します。

  2. [New File]ダイアログボックスで、[Web Services]タブをクリックしてから、[Existing Web Service]を選択して[OK]をクリックします。

    tut3-4NewFile

    Workbenchに、Web Serviceウィザードのプロジェクトの場所を指定するパネルが表示されます。

  3. パネルに次のように入力します。 指定が必要な値は、[Package]のcalcのみです。

    tut3-4WSDLWizProjLoc

    Next]をクリックすると、WorkbenchにWeb ServiceウィザードのWSDLファイル選択パネルが表示されます。 プロジェクトルートディレクトリに保存したファイルCalculatorImplWS.wsdlが、[WSDL Files in Project]リストボックスに表示されます。

  4. CalculatorImplWS.wsdlを選択して、[WSDL file or URL to use]ボックスに表示します。 [Next]をクリックします。

    tut3-4WSDLWizard1

    クラス生成およびSOAPオプションパネルが表示されます。

  5. このパネルの設定を確認します(変更する必要はありません)。

    tut3-4WSDLWizard2

  6. Finish]をクリックします。

 
Top of section

ウィザードの結果

ウィザードを実行すると、新しいディレクトリsrcがプロジェクトに追加されます。 その下のcalcパッケージディレクトリには、いくつかの新しいファイルが含まれます。 [Generate stubs]オプションでは、クライアントアプリケーションで使用する次のファイルが生成されます。

ファイル

説明

CalculatorImplWS.java

WSDLファイルで指定されたメソッドに対して宣言を持つリモートインタフェース。 java.rmi.Remoteを拡張します。各メソッドは、RemoteExceptionをスローします。

CalculatorImplWSService.java

Webサービスのスタブを取得するためにJAX-RPCクライアントによって使用されるサービスインタフェース。 このクラスを変更する必要はありません。

CalculatorImplWSServiceImpl.java

スタブ(CalculatorImplWSBinding_Stub)のインスタンス化を処理するサービス実装クラス。 このクラスを変更する必要はありません。

CalculatorImplWSBinding_Stub.java

クライアントでSOAPメッセージを処理するjBroker Webクラス。 このクラスを変更する必要はありません。

CalculatorImplWSClient.java

WebサービスにアクセスするためのスタンドアロンJavaプログラム。 コードの編集後、Webサービスのメソッドを呼び出すために使用します。

DivideFault.java

このプロジェクトのリモートインタフェースでdivide()メソッドによってスローされた例外クラス。 このファイルは、このプロジェクトに固有です。

DivideFaultMarshaler.java

DivideFaultデータタイプをSOAPメッセージで送信する必要が生じた際に、これを直列化および非直列化するMarshaler。 このファイルは、このプロジェクトに固有です。

 
Top of section

クライアントアプリケーションの編集およびテスト

スタブをインスタンス化するコード   生成されたクライアントコードは、(JNDIを介して取得される)サービスオブジェクトのメソッドを呼び出し、スタブを取得します。 コードは、次のようになります。

  public CalculatorImplWS getRemote(String[] args) throws Exception
  {
      InitialContext ctx = new InitialContext();
          
      String lookup = "xmlrpc:soap:calc.CalculatorImplWSService";
      CalculatorImplWSService service = (CalculatorImplWSService)ctx.lookup(lookup);
      CalculatorImplWS remote = (CalculatorImplWS)service.getCalculatorImplWSPort();
              
      return remote;
  }

バインドについて   レッスン 2, Webサービスの作成でCalculator Webサービスを作成した際には、Webサービスを配備しようとしている場所に従って、バインド(WebサービスのURL)を指定しました。 Calculatorクライアントでは、ウィザードは、WSDLからそのバインドを取得し、生成したスタブ内に含めます。

URLを変更した場合、次のようにスタブでバインドを上書きできます。

  public CalculatorImplWS getRemote(String[] args) throws Exception
  {
      InitialContext ctx = new InitialContext();
          
      String lookup = "xmlrpc:soap:calc.CalculatorImplWSService";
      CalculatorImplWSService service = (CalculatorImplWSService)ctx.lookup(lookup);
      CalculatorImplWS remote = (CalculatorImplWS)service.getCalculatorImplWSPort();
  
      ((javax.xml.rpc.Stub)remote)._setProperty("javax.xml.rpc.service.endpoint.address",
         "http://www.myserver.com:80/Calculator/CalculatorImpl");
  
      return remote;
  }

ここでは、元のバインドを使用します。 テストクライアントを実行する前に必要な作業は、Webサービスへの呼び出しを編集することです。 次に説明する手順は、 レッスン 2, Webサービスの作成でWebサービスをテストした際に使用した手順と同じです。

 
Top of section

エクササイズ 3-5: テストクライアントコードを編集する

このエクササイズでは、 レッスン 2, Webサービスの作成でWebサービスをテストする場合と同じクライアントテストコードを使用します。

  1. ナビゲーションペインで、CalculatorImplWSClient.javaを検索し、ダブルクリックして編集ペイン内に開きます。 これは、ソースレイアウトでは、src/calcディレクトリにあります。

  2. process()メソッド内で、4つのコメント付きのSystem.out.println()ステートメントを次のコードで置き換えます。 getRemote()への呼び出しは削除しないでください。

    この新しいコードは、コマンドラインから引数を取得して(またはデフォルト値を使用して)、4つのCalculatorメソッドを呼び出します。

      double x, y;
      if (args.length == 2)
      {
          x  = new Double(args[0]).doubleValue();
          y  = new Double(args[1]).doubleValue();
      }
      else 
      {
          x = 4.0;
          y = 5.0;
      }
      System.out.println("Add      = " + remote.add(x, y));
      System.out.println("Divide   = " + remote.divide(x, y));
      System.out.println("Multiply = " + remote.multiply(x, y));
      System.out.println("Subtract = " + remote.subtract(x, y));
    
  3. ファイルを保存します。

  4. メニューから[Project]>[Build]の順に選択します。

    [Output]ペインの[Build]タブで、正常な作成が報告されます。

    tut3-5ProjectBuildOutput

 
Top of section

エクササイズ 3-6: 生成したクライアントを使用してWebサービスをテストする

  1. メニューから[Project]>[Run Web Service Client Class]の順に選択します。

    [Web Service Wizard Client Runner]ウィンドウの選択リストに、テストクライアントクラスが表示されます。 プロジェクトにmain()メソッドを使用した他のコンパイル済みクラスが含まれる場合、それらのクラスも表示されます。

  2. Arguments]テキストボックスで、次のような2つの数値を入力します。

      4.0 5.5
    
  3. Run]をクリックします。

    System.out.println()メソッドからの出力が、出力ボックスに表示されます。

    tut3-6RunClient

  4. 完了したら、[Close]をクリックします。

以上で作業は完了です。 公開可能なCalculator Webサービスを正常に呼び出しました。

 
Top of page

実行した内容のまとめ

アプリケーションの開発   このレッスンでは、Webサービス記述(WSDL)ファイルを使用して、Webサービスにアクセスするコードを生成しました。

Workbenchツールの使用   Workbenchで、次のツールを使用しました。

次のレッスン   次のレッスンでは、Calculator WebサービスのクライアントとしてWebアプリケーションを作成する方法について学習します。

    First Previous Next Last チュートリアル : WEBサービスの操作  05/19/03 09:50:45 

Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC, a wholly owned subsidiary of Novell, Inc. All rights reserved.