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 のページ
です