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

Slides:



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

WebサービスII (第12回)‏ 2007年12月19日 植田龍男.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
2006年9月27日 植田龍男 Webサービス II (第1回) 年9月27日 植田龍男.
社会人学習講座 「Javaプログラミング概論」
第9回 2007年6月22日 応用Java (Java/XML).
2006年11月15日 植田龍男 Webサービス II (第8回) 年11月15日 植田龍男.
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
Java I 第2回 (4/18)
Applet 岡部 祐典 鈴木 敬幸.
~手続き指向からオブジェクト指向へ(Ⅰ)~
Servlet J2EE I 第8回 /
アルゴリズムとプログラミング (Algorithms and Programming)
WSDL と JAX-RPC 年10月13日 Webサービス II (第3回) WSDL と JAX-RPC 年10月13日.
Java I 第2回 (9/22).
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
WebサービスII (第8回) 2007年11月14日 植田龍男.
繰り返し プログラミング 第4回 繰り返し プログラミング第4回.
プログラミングIII演習 第1回目.
社会人学習講座 「Javaプログラミング概論」
第2章 Eclipseと簡単なオブジェクト 指向プログラミング
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
WSDL と JAX-RPC 年10月20日 Webサービス II (第4回) WSDL と JAX-RPC 年10月20日.
2005年10月6日 植田龍男 Webサービス II (第2回) 年10月6日 植田龍男.
第20章 Flyweight ~同じものを共有して無駄をなくす~
Bridge Pattern
Javaプログラムの実行まで バイト Javaの コード 実行 ソースコード Java ファイル名 ファイル名 abc.java
RMI ソフトウェア特論 第6回 /
Javaによる Webアプリケーション入門 第9回
コンパイラの解析 (2) GCJのデータ構造 - 1.
Webサービスを使った クライアント・プログラム
Stateful Session Beans
第12回 2007年7月13日 応用Java (Java/XML).
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
プログラミング言語入門 手続き型言語としてのJava
第10回 2007年6月29日 応用Java (Java/XML).
Webサービス II(第3回) 2007年10月10日.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
第11回 2007年7月6日 応用Java (Java/XML).
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
第3回 2007年4月27日 応用Java (Java/XML).
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
WebサービスII (第7回) 2007年11月7日 植田龍男.
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
第6回 2007年6月1日 応用Java (Java/XML).
EclipseでWekaのAPIを呼び出す
Javaによる Webアプリケーション入門 第6回
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
Collection, Generics, Iterator
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
Jakarta Struts (2) ソフトウェア特論 第11回.
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
第2回 2007年4月20日 応用Java (Java/XML).
パソコンのしくみ ハードウェア OS(Operating System) アプリケーション NEC DOS
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日 植田龍男.
アルゴリズムとプログラミング (Algorithms and Programming)
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
C#プログラミング実習 第3回.
Javaによる Webアプリケーション入門 第4回
Annotation EJB 3.0 コース 第3回 2006年8月4日.
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
統合開発環境のための プログラミング言語拡張 フレームワーク
JAVA入門⑥ クラスとインスタンス.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
2006年10月18日 植田龍男 Webサービス II (第4回) 年10月18日 植田龍男.
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Java SE 6以降の流れ 新しく、より使いやすいAPI (JSR 251) Factoryのクラスは不要 apt なしで javac 単独で処理が可能 http://www.wakhok.ac.jp/~tatsuo/summer2006/

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

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

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

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

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

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

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

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