Presentation is loading. Please wait.

Presentation is loading. Please wait.

WebサービスII (第10回) 2007年11月28日 植田龍男.

Similar presentations


Presentation on theme: "WebサービスII (第10回) 2007年11月28日 植田龍男."— Presentation transcript:

1 WebサービスII (第10回) 2007年11月28日 植田龍男

2 本日の目的 RESTful なwebサービスの提供(続き) 参照実装の提供 – Jerseyプロジェクト Webサービスの統合と規格化
WADL(Web Application Definition Language) Jersey でのアノテーション処理( apt )

3 前回までやったこと RESTfulなWebサービスとは? それへのアクセス(JAXB) Webサービスの開発 Jerseyプロジェクトとは?
HelloWorldの実現 UriTemplate – RESTful の拡張

4 前回から取り組んでいること RESTful な Webサービスのサーバ側 JAX-WS の枠組みの中に構築
POJO + アノテーションのスタイル

5 サービスのサンプル @UriTemplate("/helloworld")
public class HelloWorldResource { @HttpMethod("GET") @ProduceMime("text/plain") public String getClichedMessage() { return "Hello World!";

6 サービスのコンパイル ライブラリ jsr311-api.jar をクラスパスに指定
javac -cp ~/jersey-0.4-ea/lib/jsr311-api.jar HelloWorldResouce.java

7 今回追加したいこと WADLファイルの自動生成 WADLの情報を提供するサービス
Jersey の枠組みでは、POJOに付加され たアノテーションから自動生成

8 アノテーションの処理の仕組み アノテーションを解釈する専用のクラス 「プロセッサ」 プロセッサを呼び出すもの
javac コマンド( Java SE 6 ) apt コマンド ( J2SE 5.0 ) Jersey 0.4 は J2SE apt で実装

9 apt とは何か? Annotation Processing Tool J2SE 5.0 から追加されたコマンド apt
(javac, javadoc に関連あり) メタデータを解釈・処理するプロセッサを 呼び出す ソースファイルとメタデータを解析 ソース、関連ファイルの自動生成等

10 apt を使うために用意するもの メタデータを含むソースファイル(処理対象) Annotation Processor のクラス
(メタデータを解釈し、処理する) Annotation Processor Factory のクラス (Processorを提供する) com.sun.mirror の4つのパッケージ ( $JAVA_HOME/lib/tools.jar の中)

11 サンプル1: Processor の仕組みを知る
サンプルの目的 AnnotationProcessor の実装 AnnotationPorcessorFactory の実装 aptによる実行の手順 AnnotationProcesor が利用するクラス(イン タフェース)の意味と利用方法

12 サンプル1: ProcessorAnnotation の実装
com.sun.mirror.apt.AnnotationProcessor インタフェースを実装する public void process() { } 処理内容を記述 コンストラクタの定義 AnnotationProcessor は単独では利用で きない(AnnotationProcessorFactoryが必 要)

13 サンプル1: FirstProcessorの処理
public void process() { //ソース内にあるAnnotationの一覧 for( AnnotationTypeDeclaration atd : atds ) System.out.println( atd ); //解析対象のクラス for( TypeDeclaration td : env.getSpecifiedTypeDeclarations() ) System.out.println( td ); }

14 サンプル1: 実行までの手順 apt に ProcessorFactory のクラスを指定
-factory または –factorypath 例) apt –factory FirstProcessorFactory InfoAnnotated.java 注)現行では $JAVAHOME/lib/tools.jar をクラスパスに指定する必要あり set CLASSPATH=C:\j2sdk1.5.0\lib \tools.jar;.

15 apt + プロセッサでできること ソースファイルの解析 アノテーションの情報の解釈 データファイルの自動生成 ソースファイルの自動生成
ソースのコンパイル( javac に処理を渡す)

16 Java SE 6以降の流れ 新しく、より使いやすいAPI (JSR 251) Factoryのクラスは不要
apt なしで javac 単独で処理が可能

17 Jersey の自動処理 HelloWorldService を記述するWADLが 自動生成
com/sun/ws/rest/wadl/resource の下に application.wadl 同じディレクトリに WadlResouce のソースとバイトコード生成 =>application.wadlの情報を提供する

18 サービスを確認するには? Webサーバと 「コンテナ」が必要 今回は Jerseyと共に配布されている

19 サーバのプログラム(1) public class Main4 {
public static void main(String[] args) { HttpHandler handler = ContainerFactory.createContainer( HttpHandler.class, hello.HelloWorldResource.class com.sun…resource.WadlResouce.class);

20 サーバのプログラム(2) HttpServer server = HttpServer.create(
new InetSocketAddress(9998), 0); server.createContext("/", handler); server.setExecutor(null); server.start(); :

21 サーバのコンパイルと実行 ant もしくはシェルスクリプトで構築 #!/bin/bash LIB=~/jersey-0.4-ea/lib
javac -classpath.:$LIB/activation.jar: $LIB/ant.jar:$LIB/comresrcgen.jar: $LIB/grizzly jar:$LIB/http.jar: $LIB/jaxb-api.jar:$LIB/jaxb-impl.jar ….

22 確認 ブラウザからアクセス http://localhost:9998/helloworld

23 まとめ:開発の手順の比較(1) Java SE 6 の SOAP型の開発
@Webservice アノテーションが付加され た POJO からスタート Jersey の RESTful 型の開発 が付加さ れた POJO からスタート

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


Download ppt "WebサービスII (第10回) 2007年11月28日 植田龍男."

Similar presentations


Ads by Google