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

Slides:



Advertisements
Similar presentations
セッション管理 ソフトウェア特論 第 8 回. ここでの内容 セッション管理の基本を知る。 HttpSession の使い方を知る。
Advertisements

1 WSIF における Web サービス・メソッドの自動設 定 2004 年 3 月 23 日 越田高志 松江工業高等専門学校 情報工学科 電子情報通信学会 2004年総合 大会.
年度 J2EE II 稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴. 2 この講義の位置づけ 3年前期の「データベース論 (J2EE I) 」に続く講義。 「データベース論」の講義内容を理解 していることが前提。
Web サービス II ( 第 13 回 )‏ 2008 年 1 月 9 日 植田龍男. 本日の目的 Web サービスの歴史と将来の展望 (1) WSDL 2.0 の登場 ‏ Jersey プロジェクト Ver 0.5 による開発.
応用 Java(Java/XML) 第 10 回 2006 年 7 月 14 日 植田龍男. 後半の内容の予定 XPath (6/9) 、 XSLT (6/16) 名前空間 (Namespace) (6/16) XML 文書の妥当性の検証 (6/23) DTD, W3C XML Schema SOAP.
WebサービスII (第12回)‏ 2007年12月19日 植田龍男.
2006年9月27日 植田龍男 Webサービス II (第1回) 年9月27日 植田龍男.
2004年度 サマースクール in 稚内 JSFによるWebアプリケーション開発
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
静岡大学大学院理工学研究科 阿部 秀尚 Weka入門(セットアップ編) 静岡大学大学院理工学研究科 阿部 秀尚
2006年11月15日 植田龍男 Webサービス II (第8回) 年11月15日 植田龍男.
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
Visual Studio 2005による XML Web サービス入門
第2章 ネットサービスとその仕組み(前編) [近代科学社刊]
Applet 岡部 祐典 鈴木 敬幸.
WebサービスII (第10回) 2007年11月28日 植田龍男.
Mavenによる プロジェクト管理 近畿大学理工学部 情報学科3年  小野実.
Servlet J2EE I 第8回 /
WSDL と JAX-RPC 年10月13日 Webサービス II (第3回) WSDL と JAX-RPC 年10月13日.
JavaServlet&JSP入門 01K0018 中村太一.
稚内北星学園大学 情報メディア学部 助教授 安藤 友晴
タグライブラリ ソフトウェア特論 第6回.
卒研:データベースチーム 第4回 DOMを使った処理
MSBuild 色々出来るよ 2011/04/02 お だ.
稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴
セッション管理 J2EE I 第9回 /
WebサービスII (第8回) 2007年11月14日 植田龍男.
ビューとコントローラ.
HTTPプロトコルとJSP (1) データベース論 第3回.
Curlの仕組み.
タグライブラリとJSP J2EE II 第2回 2004年10月7日 (木).
HTTPプロトコル J2EE I 第7回 /
WSDL と JAX-RPC 年10月20日 Webサービス II (第4回) WSDL と JAX-RPC 年10月20日.
2005年10月6日 植田龍男 Webサービス II (第2回) 年10月6日 植田龍男.
RMI ソフトウェア特論 第6回 /
Javaによる Webアプリケーション入門 第9回
Javaによる Webアプリケーション入門 第5回
第8章 Web技術とセキュリティ   岡本 好未.
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
コンパイラの解析 (2) GCJのデータ構造 - 1.
Stateful Session Beans
JDBC J2EE I 第4回 /
Webサービス II(第3回) 2007年10月10日.
WebサービスII (第7回) 2007年11月7日 植田龍男.
Webアプリケーションの方向性 データベース論 第13回.
Javaによる Webアプリケーション入門 第6回
JDBC データベース論 第12回.
Javaによる Webアプリケーション入門 第7回
Jakarta Struts (2) ソフトウェア特論 第11回.
Javaによる Webアプリケーション入門 第2回
JXTAの概要 P2P特論 (ソフトウェア特論) 第3回 /
2006年11月8日 植田龍男 Webサービス II (第7回) 年11月8日 植田龍男.
JXTA Shell (1) P2P特論 (ソフトウェア特論) 第4回 /
第13回 2007年7月20日 応用Java (Java/XML).
JDBC J2EE I (データベース論) 第5回 /
Servlet ソフトウェア特論 第7回.
Servlet J2EE I (データベース論) 第12回 /
Servlet データベース論 第6回.
JXTA Shell (2) P2P特論 (ソフトウェア特論) 第5回 /
JDBC ソフトウェア特論 第3回.
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
Javaによる Webアプリケーション入門 第8回
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴
JSPの基本 J2EE I (データベース論) 第8回 /
プログラム分散化のための アスペクト指向言語
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
2006年10月18日 植田龍男 Webサービス II (第4回) 年10月18日 植田龍男.
Presentation transcript:

Webサービスを使った クライアント・プログラム ソフトウェア特論 第7回 / 2004-06-25

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

きょうの目標 Webサービスの基本を復習しよう。 Webサービスを使ったクライアント・プログラムを作ってみよう。 Google API を使ってみる。

「Webアプリケーション」の場合 「Webサーバ」が「Webブラウザ」と通信を行う。

「Webサービス」の場合 「Webサーバ」が「プログラム」と通信を行う。

Webサービスとは何か? Webのブラウザを使わずに、プログラム中から Web にアクセスして必要な情報を取り出せるサービス。

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

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

HTTPの利用 (2) しかし、HTTP (80番) は使えるだろう。 そこで、トランスポート層のプロトコルとして HTTP を使う。 まれに、SMTP を使う場合もある。

XML の利用 Webサービスで利用されるデータには、XML が使われている。

SOAP Webサービスに対する「要求」と、クライアントへの「応答」のフォーマット XML で記述されている Google Web APIs では 「こんな言葉を含むページを調べたい」要求 「こんなページがありました」という応答 この2つがSOAPで記述されている

WSDL (1) Webサービスの具体的な内容を書いてあるもの (Javaでの)インタフェースのようなもの XML で記述されている。 どこにアクセスすればよいのか どのようなメソッドがあるか など (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

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/index.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) 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

手順 (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 クライアントプログラム WSDL stub.doGoogleSearch(); <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] 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 Google Web APIs http://java.sun.com/webservices/jwsdp/index.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/pukiwiki.php 丸山・安藤ゼミで用意している Ant のページです