PowerPoint ファイル

Download Report

Transcript PowerPoint ファイル

Webサービスを使った
クライアント・プログラム
ソフトウェア特論
第7回 / 2004-06-25
お知らせ


レポート課題を出しています。
提出は 7/30 (金) まで。
きょうの目標



Webサービスの基本を復習しよう。
Webサービスを使ったクライアント・プログ
ラムを作ってみよう。
Google API を使ってみる。
「Webアプリケーション」の場合

「Webサーバ」が「Webブラウザ」と通信を
行う。
「Webサービス」の場合

「Webサーバ」が「プログラム」と通信を行う。
Webサービスとは何か?

Webのブラウザを使わずに、プログラム中
から Web にアクセスして必要な情報を取
り出せるサービス。
Webサービスで使われている
技術
HTTPの利用 (1)


Webサービスは、クライアントとは(ネット
ワーク的に)離れていることが想定されて
いる。
しかし、ネットワーク的に離れたサービスに
アクセスしようと思っても、たいていのサイ
トではWebとメール以外のポートは閉じて
いる。
HTTPの利用 (2)



しかし、HTTP (80番) は使えるだろう。
そこで、トランスポート層のプロトコルとして
HTTP を使う。
まれに、SMTP を使う場合もある。
XML の利用


Webサービスで利用されるデータには、
XML が使われている。
そのため、Webサービスを構成するプログ
ラムは、どんな言語で記述されてもよい。
SOAP



Webサービスに対する「要求」と、クライア
ントへの「応答」のフォーマット
XML で記述されている
Google Web APIs では



「こんな言葉を含むページを調べたい」要求
「こんなページがありました」という応答
この2つがSOAPで記述されている
WSDL (1)

Webサービスの具体的な内容を書いてあ
るもの





どこにアクセスすればよいのか
どのようなメソッドがあるか
など
(Javaでの)インタフェースのようなもの
XML で記述されている。
WSDL (2)

WSDL から、Webサービスにアクセスする
クライアントプログラムを生成できる。


JWSDP (JavaのWebサービス開発キット)では
wscompile というツールで WSDL から Javaプ
ログラムを生成
クライアントプログラムからはメソッドを呼び出
すだけで、プログラムの中身はWebサービス
側にあるので、これでうまくいく。
WSDL (3)


既存のプログラムからWSDLを生成するこ
ともできる。
Google Web APIs では、WSDL文書がは
じめから付属している。
JAX-RPC
RMIのしくみ (1)
RMI のしくみ (2)




クライアントで Hello クラスのインスタンス
を作成する。
クライアントで、このインスタンスの
sayHello メソッドを実行する。
Hello クラスの実装はサーバ側にある。
サーバで sayHello メソッドが実行され、返
値がクライアントに返される。
RPC (Remote Procedure Call)




RMI の原型となった技術
Sun Microsystems によって開発された。
別のマシン上にある手続きを実行するた
めのしくみ。
Unix, Windows で広く普及している。
JAX-RPC とは


Javaで「RPC型」のWebサービスを実現す
るための API
JWSDP, J2EE のパッケージに同梱されて
いる。

J2SE には入っていない
JAX-RPC のしくみ (1)
JAX-RPC のしくみ (2)




プログラミングスタイルは RMI と変わらな
い。
クライアントから利用できるメソッド
は、”WSDL” によって定義されている。
RMI のスケルトンは、JAX-RPC では “Tie”
となる。
クライアントプログラムの実行にあたって
は、”JAX-RPC Runtime” が必要になる。
JAX-RPC のしくみ (3)


サーバとクライアントの通信は、HTTP 上
の SOAP が使われる。
RMI の rmiregistry に代わるものとして、
UDDI というものがある。

本講義では扱いません。
Google Web APIs の利用
Google Web APIs とは




プログラム(Javaなど)から、Google にアク
セスするための API
これが Webサービスとして提供されている。
プログラムから Google にアクセスして、検
索結果をプログラムで処理できる。
ある言葉に関するGoogleの検索件数を毎
日カウントする、といったプログラムが作成
できる。
Google Web APIs を使うには?


Google の Webサー
ビスにアクセスするた
めのクライアントプロ
グラムと、スタブが必
要になる。
Google Web APIs で
用意されている
WSDL からスタブを生
成できる。
Google Web APIs を
使うための手順 (1)

JWSDP の入手とインストール



JWSDP に、JAX-RPC のAPI やさまざまなツー
ルが含まれている。
いくつか環境変数の設定が必要
Google Web APIs の入手


Google の Webサービスで利用する WSDL を
入手できる。
別にライセンスキーの取得も必要
Google Web APIs を
使うための手順 (2)

スタブの生成



WSDL から生成する。自分でプログラミングす
る必要はない。
ただし、XML は書かねばならない。
生成には、JWSDP に含まれている
wscompile というツールを使う。
Google Web APIs を
使うための手順 (3)

クライアントプログラムの作成と実行


Google の Webサービスにアクセスするプロ
グラムを書く。
コンパイルと実行では ant というツールを使っ
た方が便利。必要な jar ファイルがあまりに多
いため。
手順 (1)
JWSDPの入手とインストール (1)

ダウンロード




http://java.sun.com/webservices/jwsdp/ind
ex.jsp
JWSDP 1.3 をダウンロードする。
インストールする
環境変数の設定

JWSDP をインストールしたディレクトリを、環
境変数 JWSDP_HOME にする。
手順 (1)
JWSDPの入手とインストール (2)

PATH の設定


%JWSDP_HOME%\apache-ant\bin
%JWSDP_HOME%\jaxrpc\bin
手順 (2)
Google Web APIs の入手 (1)

ダウンロード


http://www.google.com/apis/
ダウンロードしたファイルを開くと


GoogleSearch.wsdl という WSDL ファイルが
ある
ほかには Java や .Net のサンプルプログラム
など
手順 (2)
Google Web APIs の入手 (2)



Google Web APIs を利用するには、アカ
ウントの作成が必要
1日に1,000回までの検索が可能になる
http://www.google.com/apis/ の
“Create Account” をクリックして、必要な
項目を入力
手順 (2)
Google Web APIs の入手 (3)

登録されたメールアドレスにライセンス
キーが送られる。


Your Google Web APIs license key is xxxxx
このライセンスキーは、Webサービスを呼び出
すメソッドの引数として利用する
手順 (3)
スタブの生成 (1)



WSDL から生成する。自分でプログラミン
グする必要はない。
ただし、XML は書かねばならない。
生成には、JWSDP に含まれている
wscompile というツールを使う。
手順 (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>
手順 (3)
スタブの生成 (3)


<wsdl location="GoogleSearch.wsdl"
packageName=
"jp.ac.wakhok.tomoharu.google"
/>
location属性でWSDLファイルを指定
packageName属性は、生成されるスタブ
のパッケージ名を指定
手順 (3)
スタブの生成 (4)
wscompile -gen:client -keep config.xml



-gen:client オプションでスタブを生成
-keep オプションで、スタブのソースファイ
ルを残す
config.xml は先に作成した設定ファイル
手順 (3)
スタブの生成 (5)

パッケージ名で指定したディレクトリに、
ソースファイル・クラスファイルが作成され
る。


例えば、jp\ac\wakhok\tomoharu\google
スタブのほか、Google API で利用できるイン
タフェースなどが生成される。
手順 (4)
クライアントプログラムの作成 (1)
// まずはインポートから
import javax.xml.rpc.Stub;
// wscompile によって生成されたスタブたち
import jp.ac.wakhok.tomoharu.google.*;
手順 (4)
クライアントプログラムの作成 (2)
// (1)スタブの生成
GoogleSearchPort_Stub stub =
(GoogleSearchPort_Stub)
(new GoogleSearchService_Impl()
.getGoogleSearchPort());
手順 (4)
クライアントプログラムの作成 (3)
// (2)スタブにWebサービスのURLを
// 設定する
stub._setProperty(
Stub.ENDPOINT_ADDRESS_PROPERTY,
“http://api.google.com/search/beta2”
);
手順 (4)
クライアントプログラムの作成 (4)
// (3)Google の検索処理を呼び出す
// “xxxxx” が ライセンスキー
// args[0] が検索したい言葉
GoogleSearchResult result =
stub.doGoogleSearch(“xxxxx", args[0],
1, 10, false, "", false, "", "", "");
メソッド呼び出しとWSDL

クライアントプログラム
stub.doGoogleSearch();

WSDL
<operation name="doGoogleSearch">
<input
message="typens:doGoogleSearch"/>
<outputmessage=
"typens:doGoogleSearchResponse"/>
</operation>
手順 (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();
}
手順 (4)
クライアントプログラムの作成 (7)


Ant というツールを使ってコンパイルする。
Ant




Ant は、Javaのプログラムをコンパイルしたり
実行したりする上で手助けをしてくれるツール
Unix での make のようなもの
コンパイルにはいくつかの Jar ファイルが必要
になるので、Ant を使うのが便利
Ant は JWSDP に同梱されている。
手順 (4)
クライアントプログラムの作成 (8)


Ant では、プログラムのコンパイルや実行
の方法を build.xml というファイルに記述
する。
コンパイルするには、build.xml があるディ
レクトリで次のコマンドを実行する。


ant compile
詳しくは次回解説します。
手順 (5)
クライアントプログラムの実行 (1)


実行でも Ant を利用する。
実行するには、build.xml があるディレクト
リで次のコマンドを実行する。


ant run
“wakhok” という言葉について、Google の
検索を行い、上位10件のタイトルとURLが
表示される。
手順 (5)
クライアントプログラムの実行 (2)

下の “wakhok” と書かれている部分を書き換えると、そ
の言葉に関して Google の検索を行う。
<target name="run" depends="compile">
<java classname="GoogleSearch" >
<arg value="wakhok"/>
<classpath>
<path refid="wspack.classpath"/>
</classpath>
</java>
</target>
実行例
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
何が起きたのか?

WSDLからスタブを作成し、スタブの機能を
利用するクライアントプログラムを作成した。


ほかの言語でも、wscompile のようなツール
があれば、その言語用のスタブを作成できる。
プログラム中から Google の機能を利用で
きた。
参考文献・URL (1)

Java Web Services Developer Pack



http://java.sun.com/webservices/jwsdp/ind
ex.jsp
JWSDPのトップページです。
Google Web APIs


http://www.google.com/apis/
Google Web APIs のページです。
参考文献・URL (2)

Google Hacks




Tara Calishain, Rael Dornfest 著 / 山名早人
監訳
オライリー・ジャパン
4-87311-136-5
Google を使いこなす方法をさまざまな角度か
ら解説した本。Google Web APIs についての
解説もかなりあります。良書です。
参考文献・URL (3)

Ant講座さん


http://www.wakhok.ac.jp/~nara/pukiwiki/p
ukiwiki.php
丸山・安藤ゼミで用意している Ant のページ
です