Http://www.wakhok.ac.jp/~tatsuo/ws2/ 2006年11月8日 植田龍男 Webサービス II (第7回) http://www.wakhok.ac.jp/~tatsuo/ws2/ 2006年11月8日 植田龍男.

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

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日 植田龍男.
社会人学習講座 「Javaプログラミング概論」
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
第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)
REST型Webサービスによる 楽曲検索システムの開発
~手続き指向からオブジェクト指向へ(Ⅰ)~
WebサービスII (第10回) 2007年11月28日 植田龍男.
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).
第5回 2007年5月25日 応用Java (Java/XML).
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
WebサービスII (第8回) 2007年11月14日 植田龍男.
繰り返し プログラミング 第4回 繰り返し プログラミング第4回.
WSDL と JAX-RPC 年10月20日 Webサービス II (第4回) WSDL と JAX-RPC 年10月20日.
2005年10月6日 植田龍男 Webサービス II (第2回) 年10月6日 植田龍男.
第20章 Flyweight ~同じものを共有して無駄をなくす~
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
Bridge Pattern
RMI ソフトウェア特論 第6回 /
Naoya Ito Blog テクノロジーとWeb サービス Naoya Ito
~手続き指向からオブジェクト指向へ[Ⅱ]~
Webサービスを使った クライアント・プログラム
Stateful Session Beans
第12回 2007年7月13日 応用Java (Java/XML).
プログラミング言語入門 手続き型言語としてのJava
JDBC J2EE I 第4回 /
第10回 2007年6月29日 応用Java (Java/XML).
Webサービス II(第3回) 2007年10月10日.
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
第11回 2007年7月6日 応用Java (Java/XML).
第8回 2007年6月15日 応用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).
Javaによる Webアプリケーション入門 第6回
JDBC データベース論 第12回.
Javaによる Webアプリケーション入門 第7回
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
第2回 2007年4月20日 応用Java (Java/XML).
第13回 2007年7月20日 応用Java (Java/XML).
パッケージ,アクセス修飾子 2008年4月27日 海谷 治彦.
JDBC J2EE I (データベース論) 第5回 /
Servlet ソフトウェア特論 第7回.
応用Java(Java/XML) 第7回 2006年6月16日 植田龍男.
Servlet J2EE I (データベース論) 第12回 /
Servlet データベース論 第6回.
計算機プログラミングI 第5回 配列 文字列(Stringクラス) mainの引数 配列の利用例
JDBC ソフトウェア特論 第3回.
オブジェクト プログラミング 第2回 プログラムの基本.
JAVA入門⑥ クラスとインスタンス.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
2006年10月18日 植田龍男 Webサービス II (第4回) 年10月18日 植田龍男.
応用Java(Java/XML) 第8回 2005年6月9日 植田龍男.
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

http://www.wakhok.ac.jp/~tatsuo/ws2/ 2006年11月8日 植田龍男 Webサービス II (第7回) http://www.wakhok.ac.jp/~tatsuo/ws2/ 2006年11月8日 植田龍男

JAX-WS 新しい Webサービスの枠組み じゃ、古い Webサービスって? JAX-RPC 1.0 JAX-RPC 2.0 = JAX-WS 2.0 JAXB を利用して実現 Webサービスのアノテーションの導入

クライアントプログラムの作成(1) 自動生成ツール wsimport wsimport HelloService.wsdl HelloImpl.class, HelloServiceImpl.class, ObjectFactory.class SayHello.class, SayHelloResponse.class

クライアントプログラムの作成(2) public class HelloClient { public static void main ( String[] args ) { HelloImpl port = new HelloImplService().getHelloImplPort(); String message =port.sayHello( "Tatsuo" ); System.out.printf ( message );

JAX-WSの補足 REST(Representational State Transfer) HTTP で XMLのデータなどを交換するスタイルのWebサービス SOAP(XML-RPC) vs. REST ?? JAX-WS は JAX-RPC の後継だが RESTにも対応可能 – JAXB がベース サービス固有のXML Java のクラス

JAX-WS のAPI javax.jws パッケージ @WebService, @WebMethod などのアノテーション javax.jws.soap パッケージ @SOAPBinding などアノテーション javax.xml.ws パッケージとサブパッケージ群

javax.xml.ws パッケージ Service クラス Serviceのインナクラス enum ServiceMode ServiceMode.MESSAGE ServiceMode.PAYLOAD Provider, Dispatch, Response などのインタフェース群

JAX-WS for REST の現状 一部の仕様が流動的(?) バグ有り(?) 情報も少ない 参照) Marc Hadley氏のブログ http://weblogs.java.net/blog/mhadley/archive/2006/03/restful_web_ser_1.html

サンプル(Yahoo News検索) Yahoo News Search の API http://developer.yahoo.com/search/news/V1/newsSearch.html XML Schema も公開 http://api.search.yahoo.com/NewsSearchService/V1/NewsSearchResponse.xsd

サンプル実行までの手順 スキーマから xjc でJavaのソースを生成 (この時、一部手を入れる必要あり) 生成されたソースのコンパイル クライアントのサンプル作成とコンパイル 実行

xjc と生成されるソース xjc NewsSearchResponse.xsd yahoo/yp 以下に ResultSet.java, ResultType.java, ImageType.java ObjectFactory.java, package-info.java

ちょっと修正が必要? Yahoo/yn/ResultSet.java @XmlRootElement(name = “ResultSet”) public class ResultSet { @XmlRootElement(name = "ResultSet", namespace = "urn:yahoo:yn")

サンプルソース(1) URI nsURI = new URI("urn:yahoo:yn"); QName serviceName = new QName("yahoo",nsURI.toString()); QName portName = new QName("yahoo_port",nsURI.toString()); Service s = Service.create(serviceName);

サンプルソース(2) URI address = new URI("http", null, "api.search.yahoo.com", 80, "/NewsSearchService/V1/newsSearch", "appid=jaxws_restful_sample&type=all& results=10&sort=date&query=Japan“ ,null); s.addPort(portName, HTTPBinding.HTTP_BINDING, address.toString());

サンプルソース(3) Dispatch<Object> d = s.createDispatch(portName, jbc, Service.Mode.PAYLOAD); Map<String, Object> requestContext = d.getRequestContext(); requestContext.put( MessageContext.HTTP_REQUEST_METHOD, "GET"); StreamSource ss = (StreamSource)d.invoke(null);

サンプルのソース(4) JAXBContext jbc = JAXBContext.newInstance( "yahoo.yn" ); Unmarshaller u = jbc.createUnmarshaller(); ResultSet rs = (ResultSet)u.unmarshal(ss); for (ResultType r: rs.getResult()) { System.out.println( r.getTitle() + “ “ + r.getClickUrl() ); }

ビルドファイル(build.xml) その1 <target name="compile">    <javac destdir="." debug="on">      <src path="." />      <classpath refid=“classpath” />   </javac> </target>

ビルドファイル(build.xml) その2 <target name="run" depends="compile"> <java classname="YahooNewsTest" fork="true"> <classpath refid="classpath" /> </java> </target>