![]() ![]() ![]() ![]() ![]() |
チュートリアル : WEBサービスの操作 05/19/03 09:50:45 |
Webサービスを操作する場合には、次の2つの基本的な役割があります。
レッスン 2, Webサービスの作成では、プロバイダとしての役割で、Calculator Webサービスを配備しました。 このレッスンでは、サービスコンシューマとしての役割で、Web Serviceウィザードを使用してCalculator Webサービスを呼び出すコードを生成します。
このレッスンでは、 レッスン 2, Webサービスの作成で開始点として生成されたWSDLを使用します。 必要なコードの大部分は、そのレッスンですでに生成されていますが、このレッスンではWebサービスのソースコードがなく、WSDL (Web Services Description Language)形式の記述子ファイルのみがあるという前提で解説していきます。
注記: このレッスンでは、 レッスン 2, Webサービスの作成を完了し、Calculator Webサービスを配備したと想定しています。 このプロジェクトをテストする際には、Calculator Webサービスの配備先となるJ2EEアプリケーションサーバが実行されている必要があります。
WSDL (Web Services Description Language)は、配備したWebサービスについての情報を交換する標準的な方法です。 WSDLファイルは、Webサービスのメソッド、データタイプ、およびURLを指定するXMLドキュメントです。 これにより、抽象的で再使用可能な方法でサービスを記述できます。
WSDLファイルを取得するには、次のようないくつかのシナリオがあります。
WebサービスのWSDLファイルを取得すると、WorkbenchのWeb Serviceウィザードを使用して、サービスを呼び出すクライアントコードを生成できます。 生成したファイルには、テスト用のリモートインタフェース、サービスクラス、スタブ、およびクライアントプログラムが含まれます。
Calculator Webサービス このレッスンでは、別の開発者またはビジネスからCalculator WebサービスのWSDLファイルを取得したと想定します。 実際には、このファイルは レッスン 2, Webサービスの作成で生成しています。
作成するクライアントプログラムは、単純なJavaプログラムであり、アーカイブに保存されたJ2EEアプリケーションではありません。 Workbenchでは、アーカイブタイプを選択する必要があるため、JARプロジェクトを選択します。 アプリケーションを実行すると、コマンドラインまたは[Client Runner]ウィンドウのいずれかを使用できます。 アーカイブを作成して配備する必要はなく、単にファイルをコンパイルします。
ご使用のオペレーティングシステムのツールを使用して、CalculatorClientというプロジェクトのルートディレクトリを作成します。 ディスクドライブのルートレベル、または選択したサブディレクトリに配置できます。 このチュートリアルのサンプルパスでは、WorkbenchProjectsディレクトリにCalculatorClientを作成したことを想定しています。 Windowsでは、次のようになります。
c:\WorkbenchProjects\CalculatorClient
CalculatorClientディレクトリにファイルCalculatorImplWS.wsdlをコピーします。 このファイルは、c:\WorkbenchProjects\CalculatorWS\srcなどのように、 レッスン 2, Webサービスの作成でのプロジェクトのsrcディレクトリにあります。
注記: また、Workbench-install-directory\docs\tutorial\TutorialFiles\webservicesからもこのファイルを取得できます。 その場合、ファイルを開き、ファイルの最後のsoap:address要素でURLを編集し、Calculator Webサービスの配備先となるURLを指定することが大切です。
このエクササイズでは、Workbenchを起動しNew Projectウィザードを使用して、Calculator Webサービスを使用するクライアントアプリケーションのプロジェクトを作成します。
Workbenchを開始します。 Windowsの[スタート]メニューからNovell exteNd Workbenchのショートカットを使用できます。またはWorkbenchがすでに実行されており、プロジェクトが開いている場合は、メニューから[File]>[Close Project]の順に選択します。 開いているファイルを閉じるよう求められた場合、[Yes]をクリックします。
New Projectウィザードで、[JAR]を選択してから[OK]をクリックします。
[Project Location]テキストボックス横の省略記号をクリックして、 エクササイズ 3-1: プロジェクトディレクトリをセットアップし、WSDLファイルを取得するで作成したCalculatorClientディレクトリを選択します。 [OK]をクリックすると、パネルの残りのフィールドが自動的に記入されます。
[Next]をクリックし、最初のパネルでプロジェクト仕様をチェックしてから、[Finish]をクリックします。
ナビゲーションペインで、[Project]タブに新しいプロジェクトが表示されます。
このエクササイズでは、[Project Settings]ダイアログボックスを使用してコンパイル時のクラスパスを指定します。 WebサービスおよびWebサービスクライアントでは、クラスパスにjbroker-web.jarおよびいくつかのサポートJARを含める必要があります。
[Add to Classpath]ダイアログボックスで、Workbench-install-directory/compilelibディレクトリに移動します。 次のファイルを選択して、[Open]、[OK]の順にクリックします。
これで、[Classpath/Dependencies]タブは、次のようになります。
レッスン 2, Webサービスの作成では、Javaクラスで開始して、新しいWebサービスを作成しました。 ここでは、既存のWebサービスを表すWSDLファイルで開始します。
[New File]ダイアログボックスで、[Web Services]タブをクリックしてから、[Existing Web Service]を選択して[OK]をクリックします。
Workbenchに、Web Serviceウィザードのプロジェクトの場所を指定するパネルが表示されます。
パネルに次のように入力します。 指定が必要な値は、[Package]のcalcのみです。
[Next]をクリックすると、WorkbenchにWeb ServiceウィザードのWSDLファイル選択パネルが表示されます。 プロジェクトルートディレクトリに保存したファイルCalculatorImplWS.wsdlが、[WSDL Files in Project]リストボックスに表示されます。
CalculatorImplWS.wsdlを選択して、[WSDL file or URL to use]ボックスに表示します。 [Next]をクリックします。
クラス生成およびSOAPオプションパネルが表示されます。
ウィザードを実行すると、新しいディレクトリsrcがプロジェクトに追加されます。 その下のcalcパッケージディレクトリには、いくつかの新しいファイルが含まれます。 [Generate stubs]オプションでは、クライアントアプリケーションで使用する次のファイルが生成されます。
スタブをインスタンス化するコード 生成されたクライアントコードは、(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サービスをテストした際に使用した手順と同じです。
このエクササイズでは、 レッスン 2, Webサービスの作成でWebサービスをテストする場合と同じクライアントテストコードを使用します。
ナビゲーションペインで、CalculatorImplWSClient.javaを検索し、ダブルクリックして編集ペイン内に開きます。 これは、ソースレイアウトでは、src/calcディレクトリにあります。
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));
メニューから[Project]>[Build]の順に選択します。
[Output]ペインの[Build]タブで、正常な作成が報告されます。
メニューから[Project]>[Run Web Service Client Class]の順に選択します。
[Web Service Wizard Client Runner]ウィンドウの選択リストに、テストクライアントクラスが表示されます。 プロジェクトにmain()メソッドを使用した他のコンパイル済みクラスが含まれる場合、それらのクラスも表示されます。
[Arguments]テキストボックスで、次のような2つの数値を入力します。
4.0 5.5
System.out.println()メソッドからの出力が、出力ボックスに表示されます。
以上で作業は完了です。 公開可能なCalculator Webサービスを正常に呼び出しました。
アプリケーションの開発 このレッスンでは、Webサービス記述(WSDL)ファイルを使用して、Webサービスにアクセスするコードを生成しました。
Workbenchツールの使用 Workbenchで、次のツールを使用しました。
[Project Settings]ダイアログボックス([Project]>[Project Settings]の順に選択)
[Web Service Wizard Client Runner]ウィンドウ([Project]>[Run Web Service Client Class]の順に選択)
次のレッスン 次のレッスンでは、Calculator WebサービスのクライアントとしてWebアプリケーションを作成する方法について学習します。
![]() ![]() ![]() ![]() ![]() |
チュートリアル : 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.