Download presentation
Presentation is loading. Please wait.
Published byきみお かみいしづ Modified 約 8 年前
1
Web サービス II ( 第 13 回 ) 2008 年 1 月 9 日 植田龍男
2
本日の目的 Web サービスの歴史と将来の展望 (1) WSDL 2.0 の登場 Jersey プロジェクト Ver 0.5 による開発
3
この講義でやったこと Java SE 6 と JAXB, JAX-WS 2.0 の API JAX-WS 2.0 の枠組みによる開発 サーバサイドは POJO + アノテーション アプリケーションサーバ Glassfish RESTful な Web サービスの存在 RESTful な Web サービスの新しい開発方 法 Jersey プロジェクト、 WADL
4
2種類の Web サービス 「古典的」 Web サービス SOAP メッセージの交換 RPC 型 ( メソッドの呼び出しをインタフ ェースで定義 ) RESTful な Web サービス URI でアクセス可能、「裸の」 XML を送 信
5
それぞれの長所・短所 ( 昔 ) 古典的: WSDL による厳格な定義 標準化・統合が保証 開発者の負担大、広い普及が遅れ RESTful: 開発の自由度大、手軽、普及が速い 標準化、統合は視野外 開発者にある程度のスキルは必要
6
それぞれの長所・短所 ( 今 ) 古典的: WSDL による厳格な定義 標準化・統合が保証 EoD の普及で負担は減 RESTful: 開発の自由度大、手軽、普及が速い 標準化・統合の可能性 EoD の導入も
7
復習:開発の手順の比較 (1) Java SE 6 の SOAP 型の開発 @Webservice アノテーションが付加さ れた POJO からスタート Jersey の RESTful 型の開発 @UriTemplate, @HttpMethod が付加さ れた POJO からスタート
8
復習 : 開発手順の比較 (2) SOAP 型 ツール wsgen によるソースと WSDL の 自動生成 => サーバが公開 http://sitename/servicename?wsdl RESTful 型 apt + 専用のプロセッサによるソース と WADL の自動生成 =>RESTful サービス で公開 http://sitename/applicaiton.wadl
9
RESTful 型の課題 アノテーションの記述方法や処理方法 のより洗練されたスタイル (Jersey はまだ開発途上 ) すべてのサービスで WADL の存在の保証 WSDL との統合
10
WSDL 2.0 まで 現行の WSDL Ver 1.1 ( 原理的には SOAP 、 HTTP に非依存 実質的には HTTP 上の SOAP ) その後に追加したい機能の登場 WS-I による標準化の試み RESTful な Web サービスの普及 ( 「 HTTP と SOAP 」という表現 )
11
Jersey 0.4 の自動処理 J2SE 5.0 の apt ツールでアノテーショ ンを処理 HelloWorldService を記述する WADL を 自動生成 com/sun/ws/rest/wadl/resource の下に application.wadl WadlResouce のソースとバイトコード 生成 => application.wadl の情報を提供する
12
Jersey 0.4 の不便だった点 apt の処理は「古い」スタイル 手動で apt の処理を呼び出す必要 ( アノテーション処理の理解が必要 ) アノテーションの名称や形式の意味が 直観的にわかりにくい
13
Jersey 0.5 では 処理は POJO のコンパイルのみ javac -cp $LIB/jsr311-api.jar Source.java application.wadl を提供するクラスの存在 は意識する必要がない ( サーバ側で自動生 成 ) よりわかりやすいアノテーション @Path, @GET など
14
Jersey 0.4 の POJO @UriTemplate("/helloworld") public class HelloWorldResource { @HttpMethod("GET") @ProduceMime("text/plain") public String getClichedMessage() { return "Hello World!"; }
15
Jersey 0.5 の POJO @Path("/helloworld") public class HelloWorldResource { @GET @ProduceMime("text/plain") public String getClichedMessage() { return "Hello World!"; }
16
Jersey 0.4 => 0.5 WADL の利用はオプショナルではなくデ フォルトとなった ( 常に利用可能 ) = WADL やそれを提供するクラスの存在 は意識しなくてより ( 知識がなくてもよ い ) apt やアノテーション処理の知識も不 要 JAX-WS 2.0 の枠組みによる SOAP 型 の開発スタイルのレベルにより近づい た 開発スタイルの「統合」も近い?
17
WADL プロジェクト http://wadl.dev.java.net/ バイナリパッケージを展開 ~ -+- 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
18
Helloworld の WADL( 全体 )
19
Helloworld の WADL( 前半部 ) <representation mediaType="text/plain"/>
20
生成された Endpoint.java public class Endpoint { public static class Helloworld { public Helloworld() { … } public DataSource getAsTextPlain() { … } }
21
クライアントプログラム import hello.Endpoint; import java.io.*; import javax.activation.DataSource; public class HelloClient { public static void main( String[] args ) {
22
クライアントプログラム (2) Endpoint.Helloworld service = new Endpoint.Helloworld(); DataSource source = service.getAsTextPlain(); Reader reader = new InputStreamReader( source.getInputStream() );
23
手順のまとめ Jersey によるサーバサイドと WADL の提 供 POJO からの自動生成 第 10 回の課題を参照 : ポイントは apt によるアノテーションの処理 WADL の取得 ( クライアント側 ) WADL からの Java の自動生成 第 11 回の課題を参照: ポイントは wadl2java
24
1月の予定 1/9 第13回:「 Web サービスの未来 (1) 」 1/16 第14回:「 Web サービスの未来 (2) 」 1/23 第15回:試験 ( 2階実習室にて )
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.