Web サービス II ( 第 13 回 )‏ 2008 年 1 月 9 日 植田龍男. 本日の目的 Web サービスの歴史と将来の展望 (1) WSDL 2.0 の登場 ‏ Jersey プロジェクト Ver 0.5 による開発.

Slides:



Advertisements
Similar presentations
© Copyright the Seasar Foundation and the others all rights reserved. 1 S2Axis2 による Web2.0 らくらく実践 2006/05/14 Seasar Conference 2006 Spring 鈴木 貴典.
Advertisements

Cubby Web アプリケーションのためのシ ンプルなフレームワーク BABA Yasuyuki.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
プログラミング第5回 1 while ループ 文字列の操作
応用 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日 植田龍男.
社会人学習講座 「Javaプログラミング概論」
第9回 2007年6月22日 応用Java (Java/XML).
JPAを利用した RESTful Webサービスの開発
2006年11月15日 植田龍男 Webサービス II (第8回) 年11月15日 植田龍男.
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
Visual Studio 2005による XML Web サービス入門
Java I 第2回 (4/18)
WebサービスII (第10回) 2007年11月28日 植田龍男.
Iアプリプログラミング その1  鳥居秀徳.
アルゴリズムとプログラミング (Algorithms and Programming)
ネットワークプログラミング論 平成27年10月12日 森田 彦.
WSDL と JAX-RPC 年10月13日 Webサービス II (第3回) WSDL と JAX-RPC 年10月13日.
Java I 第2回 (9/22).
JavaServlet&JSP入門 01K0018 中村太一.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
WebサービスII (第8回) 2007年11月14日 植田龍男.
WSDL と JAX-RPC 年10月20日 Webサービス II (第4回) WSDL と JAX-RPC 年10月20日.
2005年10月6日 植田龍男 Webサービス II (第2回) 年10月6日 植田龍男.
ネットワークプログラミング論 平成28年10月17日 森田 彦.
RMI ソフトウェア特論 第6回 /
Webサービスを使った クライアント・プログラム
Stateful Session Beans
第12回 2007年7月13日 応用Java (Java/XML).
第10回 2007年6月29日 応用Java (Java/XML).
SOAP/UDDI/WSDLによるB2Bシステムの開発
SOAP/UDDI/WSDLによるB2Bシステム構築の一事例
Webサービス II(第3回) 2007年10月10日.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
第11回 2007年7月6日 応用Java (Java/XML).
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
第3回 2007年4月27日 応用Java (Java/XML).
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
WebサービスII (第7回) 2007年11月7日 植田龍男.
第6回 2007年6月1日 応用Java (Java/XML).
EclipseでWekaのAPIを呼び出す
Javaによる Webアプリケーション入門 第6回
Jakarta Struts (2) ソフトウェア特論 第11回.
第2回 2007年4月20日 応用Java (Java/XML).
2006年11月8日 植田龍男 Webサービス II (第7回) 年11月8日 植田龍男.
第13回 2007年7月20日 応用Java (Java/XML).
パッケージ,アクセス修飾子 2008年4月27日 海谷 治彦.
応用Java(Java/XML) 第7回 2006年6月16日 植田龍男.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
Servlet データベース論 第6回.
オブジェクト・プログラミング 第8回.
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
Annotation EJB 3.0 コース 第3回 2006年8月4日.
稚内北星学園大学 情報メディア学部 安藤 友晴
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
2006年10月18日 植田龍男 Webサービス II (第4回) 年10月18日 植田龍男.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
応用Java(Java/XML) 第8回 2005年6月9日 植田龍男.
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
Presentation transcript:

Web サービス II ( 第 13 回 )‏ 2008 年 1 月 9 日 植田龍男

本日の目的 Web サービスの歴史と将来の展望 (1) WSDL 2.0 の登場 ‏ Jersey プロジェクト Ver 0.5 による開発

この講義でやったこと Java SE 6 と JAXB, JAX-WS 2.0 の API JAX-WS 2.0 の枠組みによる開発 サーバサイドは POJO + アノテーション アプリケーションサーバ Glassfish RESTful な Web サービスの存在 RESTful な Web サービスの新しい開発方 法 Jersey プロジェクト、 WADL

2種類の Web サービス 「古典的」 Web サービス SOAP メッセージの交換 RPC 型 ( メソッドの呼び出しをインタフ ェースで定義 ) RESTful な Web サービス URI でアクセス可能、「裸の」 XML を送 信

それぞれの長所・短所 ( 昔 ) 古典的: WSDL による厳格な定義 標準化・統合が保証 開発者の負担大、広い普及が遅れ RESTful: 開発の自由度大、手軽、普及が速い 標準化、統合は視野外 開発者にある程度のスキルは必要

それぞれの長所・短所 ( 今 ) 古典的: WSDL による厳格な定義 標準化・統合が保証 EoD の普及で負担は減 RESTful: 開発の自由度大、手軽、普及が速い 標準化・統合の可能性 EoD の導入も

復習:開発の手順の比較 (1) Java SE 6 の SOAP アノテーションが付加さ れた POJO からスタート Jersey の が付加さ れた POJO からスタート

復習 : 開発手順の比較 (2) SOAP 型 ツール wsgen によるソースと WSDL の 自動生成 => サーバが公開 RESTful 型 apt + 専用のプロセッサによるソース と WADL の自動生成 =>RESTful サービス で公開

RESTful 型の課題 アノテーションの記述方法や処理方法 のより洗練されたスタイル (Jersey はまだ開発途上 ) すべてのサービスで WADL の存在の保証 WSDL との統合

WSDL 2.0 まで 現行の WSDL Ver 1.1 ( 原理的には SOAP 、 HTTP に非依存 実質的には HTTP 上の SOAP ) その後に追加したい機能の登場 WS-I による標準化の試み RESTful な Web サービスの普及 ( 「 HTTP と SOAP 」という表現 )

Jersey 0.4 の自動処理 J2SE 5.0 の apt ツールでアノテーショ ンを処理 HelloWorldService を記述する WADL を 自動生成 com/sun/ws/rest/wadl/resource の下に application.wadl WadlResouce のソースとバイトコード 生成 => application.wadl の情報を提供する

Jersey 0.4 の不便だった点 apt の処理は「古い」スタイル 手動で apt の処理を呼び出す必要 ( アノテーション処理の理解が必要 ) アノテーションの名称や形式の意味が 直観的にわかりにくい

Jersey 0.5 では 処理は POJO のコンパイルのみ javac -cp $LIB/jsr311-api.jar Source.java application.wadl を提供するクラスの存在 は意識する必要がない ( サーバ側で自動生 成 など

Jersey 0.4 の public class public String getClichedMessage() { return "Hello World!"; }

Jersey 0.5 の public class public String getClichedMessage() { return "Hello World!"; }

Jersey 0.4 => 0.5 WADL の利用はオプショナルではなくデ フォルトとなった ( 常に利用可能 ) = WADL やそれを提供するクラスの存在 は意識しなくてより ( 知識がなくてもよ い ) apt やアノテーション処理の知識も不 要 JAX-WS 2.0 の枠組みによる SOAP 型 の開発スタイルのレベルにより近づい た 開発スタイルの「統合」も近い?

WADL プロジェクト バイナリパッケージを展開 ~ -+- wadl -+- bin -+- wadl2java <-- UNIX 用のツール本体 | +- wadl2java.bat <-- Windows 用のツール本体 +- lib -+- wadl-cmdline-1.0-SNAPSHOT.jar +- samples -+- ant -+- build.xml <-- ant でビルド +- cmdline -+- run <-- UNIX 用 | +- run.cmd <-- Windows 用 +- maven -+- pom.xml <-- maven でビルド +- share -+- YahooSearch.wadl

Helloworld の WADL( 全体 )

Helloworld の WADL( 前半部 ) <representation mediaType="text/plain"/>

生成された Endpoint.java public class Endpoint { public static class Helloworld { public Helloworld() { … } public DataSource getAsTextPlain()‏ { … } }

クライアントプログラム import hello.Endpoint; import java.io.*; import javax.activation.DataSource; public class HelloClient { public static void main( String[] args ) {

クライアントプログラム (2) Endpoint.Helloworld service = new Endpoint.Helloworld(); DataSource source = service.getAsTextPlain(); Reader reader = new InputStreamReader( source.getInputStream() );

手順のまとめ Jersey によるサーバサイドと WADL の提 供 POJO からの自動生成 第 10 回の課題を参照 : ポイントは apt によるアノテーションの処理 WADL の取得 ( クライアント側 ) WADL からの Java の自動生成 第 11 回の課題を参照: ポイントは wadl2java

1月の予定 1/9 第13回:「 Web サービスの未来 (1) 」 1/16 第14回:「 Web サービスの未来 (2) 」 1/23 第15回:試験 ( 2階実習室にて )