Top Banner
Web ササササササササ ササササササ サササササ ササササササササ サ 7 サ / 2004-06-25
53

Web サービスを使った クライアント・プログラム

Jan 02, 2016

Download

Documents

addison-skinner

Web サービスを使った クライアント・プログラム. ソフトウェア特論 第 7 回 / 2004-06-25. お知らせ. レポート課題を出しています。 提出は 7/30 ( 金 ) まで。. きょうの目標. Web サービスの基本を復習しよう。 Web サービスを使ったクライアント・プログラムを作ってみよう。 Google API を使ってみる。. 「 Web アプリケーション」の場合. 「 Web サーバ」が「 Web ブラウザ」と通信を行う。. 「 Web サービス」の場合. 「 Web サーバ」が「プログラム」と通信を行う。. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Web サービスを使った クライアント・プログラム

Web サービスを使ったクライアント・プログラム

ソフトウェア特論第 7 回 / 2004-06-25

Page 2: Web サービスを使った クライアント・プログラム

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

Page 3: Web サービスを使った クライアント・プログラム

きょうの目標 Web サービスの基本を復習しよう。 Web サービスを使ったクライアント・

プログラムを作ってみよう。 Google API を使ってみる。

Page 4: Web サービスを使った クライアント・プログラム

「 Web アプリケーション」の場合 「 Web サーバ」が「 Web ブラウザ」

と通信を行う。

Page 5: Web サービスを使った クライアント・プログラム

「 Web サービス」の場合 「 Web サーバ」が「プログラム」と通

信を行う。

Page 6: Web サービスを使った クライアント・プログラム

Web サービスとは何か? Web のブラウザを使わずに、プログラ

ム中から Web にアクセスして必要な情報を取り出せるサービス。

Page 7: Web サービスを使った クライアント・プログラム

Web サービスで使われている技術

Page 8: Web サービスを使った クライアント・プログラム

HTTP の利用 (1)

Web サービスは、クライアントとは(ネットワーク的に)離れていることが想定されている。

しかし、ネットワーク的に離れたサービスにアクセスしようと思っても、たいていのサイトでは Web とメール以外のポートは閉じている。

Page 9: Web サービスを使った クライアント・プログラム

HTTP の利用 (2)

しかし、 HTTP (80 番 ) は使えるだろう。

そこで、トランスポート層のプロトコルとして HTTP を使う。

まれに、 SMTP を使う場合もある。

Page 10: Web サービスを使った クライアント・プログラム

XML の利用 Web サービスで利用されるデータには、

XML が使われている。 そのため、 Web サービスを構成するプ

ログラムは、どんな言語で記述されてもよい。

Page 11: Web サービスを使った クライアント・プログラム

SOAP

Web サービスに対する「要求」と、クライアントへの「応答」のフォーマット

XML で記述されている Google Web APIs では

「こんな言葉を含むページを調べたい」要求 「こんなページがありました」という応答 この2つが SOAP で記述されている

Page 12: Web サービスを使った クライアント・プログラム

WSDL (1)

Web サービスの具体的な内容を書いてあるもの どこにアクセスすればよいのか どのようなメソッドがあるか など

(Java での ) インタフェースのようなもの

XML で記述されている。

Page 13: Web サービスを使った クライアント・プログラム

WSDL (2)

WSDL から、 Web サービスにアクセスするクライアントプログラムを生成できる。 JWSDP (Java の Web サービス開発キット ) で

は wscompile というツールで WSDL から Java プログラムを生成

クライアントプログラムからはメソッドを呼び出すだけで、プログラムの中身は Web サービス側にあるので、これでうまくいく。

Page 14: Web サービスを使った クライアント・プログラム

WSDL (3)

既存のプログラムから WSDL を生成することもできる。

Google Web APIs では、 WSDL 文書がはじめから付属している。

Page 15: Web サービスを使った クライアント・プログラム

JAX-RPC

Page 16: Web サービスを使った クライアント・プログラム

RMI のしくみ (1)

Page 17: Web サービスを使った クライアント・プログラム

RMI のしくみ (2)

クライアントで Hello クラスのインスタンスを作成する。

クライアントで、このインスタンスの sayHello メソッドを実行する。

Hello クラスの実装はサーバ側にある。 サーバで sayHello メソッドが実行さ

れ、返値がクライアントに返される。

Page 18: Web サービスを使った クライアント・プログラム

RPC (Remote Procedure Call)

RMI の原型となった技術 Sun Microsystems によって開発され

た。 別のマシン上にある手続きを実行する

ためのしくみ。 Unix, Windows で広く普及している。

Page 19: Web サービスを使った クライアント・プログラム

JAX-RPC とは Java で「 RPC 型」の Web サービスを

実現するための API JWSDP, J2EE のパッケージに同梱され

ている。 J2SE には入っていない

Page 20: Web サービスを使った クライアント・プログラム

JAX-RPC のしくみ (1)

Page 21: Web サービスを使った クライアント・プログラム

JAX-RPC のしくみ (2) プログラミングスタイルは RMI と変わら

ない。 クライアントから利用できるメソッド

は、” WSDL” によって定義されている。 RMI のスケルトンは、 JAX-RPC では

“ Tie” となる。 クライアントプログラムの実行にあたって

は、” JAX-RPC Runtime” が必要になる。

Page 22: Web サービスを使った クライアント・プログラム

JAX-RPC のしくみ (3)

サーバとクライアントの通信は、 HTTP 上の SOAP が使われる。

RMI の rmiregistry に代わるものとして、 UDDI というものがある。 本講義では扱いません。

Page 23: Web サービスを使った クライアント・プログラム

Google Web APIs の利用

Page 24: Web サービスを使った クライアント・プログラム

Google Web APIs とは プログラム (Java など ) から、 Google

にアクセスするための API これが Web サービスとして提供されてい

る。 プログラムから Google にアクセスして、

検索結果をプログラムで処理できる。 ある言葉に関する Google の検索件数を

毎日カウントする、といったプログラムが作成できる。

Page 25: Web サービスを使った クライアント・プログラム

Google Web APIs を使うには?

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

Google Web APIs で用意されている WSDL からスタブを生成できる。

Page 26: Web サービスを使った クライアント・プログラム

Google Web APIs を使うための手順 (1)

JWSDP の入手とインストール JWSDP に、 JAX-RPC の API やさまざま

なツールが含まれている。 いくつか環境変数の設定が必要

Google Web APIs の入手 Google の Web サービスで利用する

WSDL を入手できる。 別にライセンスキーの取得も必要

Page 27: Web サービスを使った クライアント・プログラム

Google Web APIs を使うための手順 (2)

スタブの生成 WSDL から生成する。自分でプログラミ

ングする必要はない。 ただし、 XML は書かねばならない。 生成には、 JWSDP に含まれている wsco

mpile というツールを使う。

Page 28: Web サービスを使った クライアント・プログラム

Google Web APIs を使うための手順 (3)

クライアントプログラムの作成と実行 Google の Web サービスにアクセスする

プログラムを書く。 コンパイルと実行では ant というツール

を使った方が便利。必要な jar ファイルがあまりに多いため。

Page 29: Web サービスを使った クライアント・プログラム

手順 (1)JWSDP の入手とインストール (1)

ダウンロード http://java.sun.com/webservices/jwsd

p/index.jsp JWSDP 1.3 をダウンロードする。

インストールする 環境変数の設定

JWSDP をインストールしたディレクトリを、環境変数 JWSDP_HOME にする。

Page 30: Web サービスを使った クライアント・プログラム

手順 (1)JWSDP の入手とインストール (2)

PATH の設定 %JWSDP_HOME%\apache-ant\bin %JWSDP_HOME%\jaxrpc\bin

Page 31: Web サービスを使った クライアント・プログラム

手順 (2) Google Web APIs の入手 (1)

ダウンロード http://www.google.com/apis/

ダウンロードしたファイルを開くと GoogleSearch.wsdl という WSDL ファイ

ルがある ほかには Java や .Net のサンプルプログ

ラムなど

Page 32: Web サービスを使った クライアント・プログラム

手順 (2) Google Web APIs の入手 (2)

Google Web APIs を利用するには、アカウントの作成が必要

1 日に 1,000 回までの検索が可能になる

http://www.google.com/apis/ の “ Create Account” をクリックして、必要な項目を入力

Page 33: Web サービスを使った クライアント・プログラム

手順 (2) Google Web APIs の入手 (3)

登録されたメールアドレスにライセンスキーが送られる。 Your Google Web APIs license key is xxxxx このライセンスキーは、 Web サービスを

呼び出すメソッドの引数として利用する

Page 34: Web サービスを使った クライアント・プログラム

手順 (3)スタブの生成 (1)

WSDL から生成する。自分でプログラミングする必要はない。

ただし、 XML は書かねばならない。 生成には、 JWSDP に含まれている ws

compile というツールを使う。

Page 35: Web サービスを使った クライアント・プログラム

手順 (3)スタブの生成 (2) スタブに関する情報を設定するため、 XML を記述す

る必要がある。

<?xml version="1.0" encoding="UTF-8"?><configuration xmlns=

"http://java.sun.com/xml/ns/jax-rpc/ri/config"><wsdl location="GoogleSearch.wsdl"

packageName="jp.ac.wakhok.tomoharu.google" />

</configuration>

Page 36: Web サービスを使った クライアント・プログラム

手順 (3)スタブの生成 (3)

<wsdl location="GoogleSearch.wsdl"packageName=

"jp.ac.wakhok.tomoharu.google" />

location 属性で WSDL ファイルを指定 packageName 属性は、生成されるスタ

ブのパッケージ名を指定

Page 37: Web サービスを使った クライアント・プログラム

手順 (3)スタブの生成 (4)

wscompile -gen:client -keep config.xml

-gen:client オプションでスタブを生成 -keep オプションで、スタブのソース

ファイルを残す config.xml は先に作成した設定ファイ

Page 38: Web サービスを使った クライアント・プログラム

手順 (3)スタブの生成 (5)

パッケージ名で指定したディレクトリに、ソースファイル・クラスファイルが作成される。 例えば、 jp\ac\wakhok\tomoharu\google スタブのほか、 Google API で利用できる

インタフェースなどが生成される。

Page 39: Web サービスを使った クライアント・プログラム

手順 (4)クライアントプログラムの作成 (1)

// まずはインポートからimport javax.xml.rpc.Stub;// wscompile によって生成されたスタ

ブたちimport jp.ac.wakhok.tomoharu.google.*;

Page 40: Web サービスを使った クライアント・プログラム

手順 (4)クライアントプログラムの作成 (2)

// (1) スタブの生成GoogleSearchPort_Stub stub =

(GoogleSearchPort_Stub)(new GoogleSearchService_Impl()

.getGoogleSearchPort());

Page 41: Web サービスを使った クライアント・プログラム

手順 (4)クライアントプログラムの作成 (3)

// (2) スタブに Web サービスの URL を// 設定するstub._setProperty(

Stub.ENDPOINT_ADDRESS_PROPERTY,“http://api.google.com/search/beta2”

);

Page 42: Web サービスを使った クライアント・プログラム

手順 (4)クライアントプログラムの作成 (4)

// (3)Google の検索処理を呼び出す// “xxxxx” が ライセンスキー// args[0] が検索したい言葉GoogleSearchResult result =

stub.doGoogleSearch(“xxxxx", args[0], 1, 10, false, "", false, "", "", "");

Page 43: Web サービスを使った クライアント・プログラム

メソッド呼び出しと WSDL クライアントプログラム

stub.doGoogleSearch(); WSDL

<operation name="doGoogleSearch"><input

message="typens:doGoogleSearch"/><outputmessage=

"typens:doGoogleSearchResponse"/></operation>

Page 44: Web サービスを使った クライアント・プログラム

手順 (4)クライアントプログラムの作成 (6)

// (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();

}

Page 45: Web サービスを使った クライアント・プログラム

手順 (4)クライアントプログラムの作成 (7)

Ant というツールを使ってコンパイルする。 Ant

Ant は、 Java のプログラムをコンパイルしたり実行したりする上で手助けをしてくれるツール

Unix での make のようなもの コンパイルにはいくつかの Jar ファイルが必要

になるので、 Ant を使うのが便利 Ant は JWSDP に同梱されている。

Page 46: Web サービスを使った クライアント・プログラム

手順 (4)クライアントプログラムの作成 (8)

Ant では、プログラムのコンパイルや実行の方法を build.xml というファイルに記述する。

コンパイルするには、 build.xml があるディレクトリで次のコマンドを実行する。 ant compile

詳しくは次回解説します。

Page 47: Web サービスを使った クライアント・プログラム

手順 (5)クライアントプログラムの実行 (1)

実行でも Ant を利用する。 実行するには、 build.xml があるディ

レクトリで次のコマンドを実行する。 ant run

“wakhok” という言葉について、 Google の検索を行い、上位 10 件のタイトルと URL が表示される。

Page 48: Web サービスを使った クライアント・プログラム

手順 (5)クライアントプログラムの実行 (2) 下の “ wakhok” と書かれている部分を書き換えると、

その言葉に関して Google の検索を行う。

<target name="run" depends="compile"><java classname="GoogleSearch" >

<arg value="wakhok"/> <classpath>

<path refid="wspack.classpath"/></classpath>

</java></target>

Page 49: Web サービスを使った クライアント・プログラム

実行例run: [java] 0 [java] <b>wakhok</b>.TV [java] http://www.ctc-wakhok.tv/

[java] 1 [java] UNIX データベース入門 [java] http://www.wakhok.ac.jp/DB/DB.html

[java] 2 [java] Welcome to Wakkanaihokusei Biblion [java] http://www.wakhok.ac.jp/biblion.html

Page 50: Web サービスを使った クライアント・プログラム

何が起きたのか? WSDL からスタブを作成し、スタブの

機能を利用するクライアントプログラムを作成した。 ほかの言語でも、 wscompile のような

ツールがあれば、その言語用のスタブを作成できる。

プログラム中から Google の機能を利用できた。

Page 51: Web サービスを使った クライアント・プログラム

参考文献・ URL (1)

Java Web Services Developer Pack http://java.sun.com/webservices/jwsd

p/index.jsp JWSDP のトップページです。

Google Web APIs http://www.google.com/apis/ Google Web APIs のページです。

Page 52: Web サービスを使った クライアント・プログラム

参考文献・ URL (2)

Google Hacks Tara Calishain, Rael Dornfest 著 / 山名早

人 監訳 オライリー・ジャパン 4-87311-136-5 Google を使いこなす方法をさまざまな角度

から解説した本。 Google Web APIs についての解説もかなりあります。良書です。

Page 53: Web サービスを使った クライアント・プログラム

参考文献・ URL (3)

Ant 講座さん http://

www.wakhok.ac.jp/~nara/pukiwiki/pukiwiki.php

丸山・安藤ゼミで用意している Ant のページです