Presentation is loading. Please wait.

Presentation is loading. Please wait.

WSDL と JAX-RPC ソフトウェア特論 第 10 回 / 2004-07-20. お知らせ レポート課題を出しています。 提出は 7/30 ( 金 ) まで。

Similar presentations


Presentation on theme: "WSDL と JAX-RPC ソフトウェア特論 第 10 回 / 2004-07-20. お知らせ レポート課題を出しています。 提出は 7/30 ( 金 ) まで。"— Presentation transcript:

1 WSDL と JAX-RPC ソフトウェア特論 第 10 回 / 2004-07-20

2 お知らせ レポート課題を出しています。 提出は 7/30 ( 金 ) まで。

3 きょうの目標 WSDL と JAX-RPC の関係について理解 する。

4 Google Web APIs と スタブの生成

5 Google Web APIs を使うに は? Google の Web サー ビスにアクセスする ためのクライアント プログラムと、スタ ブが必要になる。

6 スタブの生成 (1) Google Web APIs に付属している WSDL から生成する。自分でプログラ ミングする必要はない。 生成には、 JWSDP に含まれている wscompile というツールを使う。 wscompile を実行すると、 32 個のクラ スファイルが生成される。

7 スタブの生成 (2) 生成されたスタブ GoogleSearchService GoogleSearchService_Impl GoogleSearchPort GoogleSearchPort_Stub GoogleSearchResult ResultElement などなど

8 クライアントプログラムの作 成 クライアントプログラムでは、スタブ を利用して Google の Web サービスに アクセスする。

9 クライアントプログラムと WSDL の対応

10 WSDL の全体的な構造 ……

11 WSDL の各要素の概要 service 要素では、主にエンドポイントを指定 する。 binding 要素では、主に Web サービスの通信 の方法について定める。 portType 要素は、 Java のインタフェースに相 当する。 Message 要素では、 portType 要素の input ・ output 要素で使われる型を指定する。 types 要素では、 XML Schema を使って、 新 しい型を定義する。

12 スタブの生成 (1) // (1) スタブの生成 GoogleSearchPort_Stub stub = (GoogleSearchPort_Stub) (new GoogleSearchService_Impl().getGoogleSearchPort());

13 スタブの生成 (2) 省略せずに書いたソース GoogleSearchService service = new GoogleSearchService_Impl(); GoogleSearchPort port = service.getGoogleSearchPort(); GoogleSearchPort_Stub stub = (GoogleSearchPort_Stub)port;

14 スタブの生成 (3) service 要素の名前との対応 GoogleSearchService service = new GoogleSearchService_Impl(); ……

15 スタブの生成 (4) GoogleSearchService インタフェース GoogleSearchService_Impl GoogleSearchService の実装クラス

16 スタブの生成 (5) portType 要素の名前との対応 GoogleSearchPort port = service.getGoogleSearchPort();......

17 スタブの生成 (6) GoogleSearchPort_Stub stub = (GoogleSearchPort_Stub)port; GoogleSearchPort インタフェース GoogleSearchPort_Stub GoogleSearchPort の実装クラス この後は、この GoogleSearchPort_Stub を操 作して、 Google の Web サービスにアクセス する。

18 スタブにエンドポイントを 設定する (1) // (2) スタブにエンドポイントを設定する stub._setProperty( Stub.ENDPOINT_ADDRESS_PROPERTY, “ http://api.google.com/search/beta2 ” http://api.google.com/search/beta2 );

19 スタブにエンドポイントを 設定する (2) エンドポイント = Web サービスを提供 している URL この Web サービスは、 http://api.google.com/search/beta2 と いう URL にアクセスする。 http://api.google.com/search/beta2 <soap:address location= "http://api.google.com/search/beta2"/>

20 Google の検索処理 (1) // (3)Google の検索処理を呼び出す // “ xxxxx ” が ライセンスキー // args[0] が検索したい言葉 GoogleSearchResult result = stub.doGoogleSearch( “ xxxxx", args[0], 1, 10, false, "", false, "", "", "");

21 Google の検索処理 (2) stub.doGoogleSearch( …… ) GoogleSearchPort_Stub クラスは、 GoogleSearchPort インタフェースを実 装している。 GoogleSearchPort  WSDL の portType 要素に対応

22 Google の検索処理 (3) WSDL の portType 要素...... <input message= "typens:doGoogleSearch"/> <output message= "typens:doGoogleSearchResponse"/>

23 Google の検索処理 (4) GoogleSearchPort インタフェー ス public interface GoogleSearchPort extends java.rmi.Remote { public byte[] doGetCachedPage(......) throws RemoteException; public String doSpellingSuggestion(......) throws RemoteException; public GoogleSearchResult doGoogleSearch(......) thorws RemoteException; }

24 Google の検索処理 (5) メソッド呼び出しと WSDL stub.doGoogleSearch( …… ); <input message="typens:doGoogleSearch"/> <output message= "typens:doGoogleSearchResponse"/>

25 Google の検索処理 (6) メソッドの引数 stub.doGoogleSearch( “ xxxxx", args[0], 1, 10, false, "", false, "", "", ""); doGoogleSearch メソッドには、 10 個の 引数がある。

26 Google の検索処理 (7) portType 要素での引数の指定 <input message= "typens:doGoogleSearch"/> <output message= "typens:doGoogleSearchResponse"/>

27 Google の検索処理 (8) message 要素での引数の指定...... メソッドの 10 個の引数の定義は、ここにある。

28 Google の検索処理 (9) 引数のそれぞれの型...... xsd:string は Java の String 型に、 xsd:int は Java の int 型にそれぞれ変換 される。

29 Google の検索処理 (10) doGoogleSeach の引数の型 public GoogleSearchResult doGoogleSearch( String key, String q, int start, int maxResults, boolean filter, String restrict, boolean safeSearch, String lr, String ie, String oe) throws RemoteException;

30 Google の検索処理 (11) メソッドの返値 GoogleSearchResult result = stub.doGoogleSearch( “ xxxxx", args[0], 1, 10, false, "", false, "", "", ""); GoogleSearchResult 型のオブジェクト が返値となる。

31 Google の検索処理 (12) portType 要素での返値の指定 <input message= "typens:doGoogleSearch"/> <output message= "typens:doGoogleSearchResponse"/>

32 Google の検索処理 (13) message 要素での返値の指定 <part name= “ return ” type="typens:GoogleSearchResult"/> メソッドの返値として、 GoogleSearchResult という型が定義されている。 具体的な定義は、 types 要素の中で

33 Google の検索処理 (14) types 要素での新しい型の指 定 <xsd:element name="documentFiltering" type="xsd:boolean"/> <xsd:element name="resultElements" type="typens:ResultElementArray"/>......

34 Google の検索処理 (15) types 要素と Java の型 types 要素で指定された型 (GoogleSearchResult) が、 Java のオブ ジェクトとなる。

35 検索結果の出力 (1) // (4) 検索結果の出力 ResultElement[] elements = result.getResultElements(); for (int i=0; i<10; i++) { System.out.println(i); System.out.println(elements[i].getTitle()); System.out.println(elements[i].getURL()); System.out.println(); }

36 検索結果の出力 (2) result のメソッド呼び出し result.getResultElements(); <xsd:element name="resultElements" type="typens:ResultElementArray"/>......

37 検索結果の出力 (3) GoogleSearchResult のプロパ ティ types 要素で定義された GoogleSearchResult には、いくつかの 子要素がある。 そうした子要素は、 Java オブジェクト の GoogleSearchResult ではプロパティ となっている。 getter (get + 子要素名のメソッド ) でアク セスできる。

38 検索結果の出力 (4) 返値が新しい型になる ResultElement[] elements = result.getResultElements(); <xsd:element name="resultElements" type="typens:ResultElementArray"/>......

39 検索結果の出力 (5) types 要素中の ResultElement 型......

40 検索結果の出力 (6) ResultElement オブジェクトの利 用 System.out.println(elements[i].getTitle()); System.out.println(elements[i].getURL());


Download ppt "WSDL と JAX-RPC ソフトウェア特論 第 10 回 / 2004-07-20. お知らせ レポート課題を出しています。 提出は 7/30 ( 金 ) まで。"

Similar presentations


Ads by Google