Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

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

2 今週の Java の2大ニュース!! Java のオープンソース化が正式に発表!
Java SE 6 がβ版ではなくなりました! JDK 6 Release Candidate

3 本日の目標(その1) Java SE 6 をインストールしよう Windows版は管理者権限が必要
(自分のノートPCなどを利用してください。) 実習室のマシンの場合 Linux で作業してください。 注意: 250Mbyte ほどの空き容量が必要

4 インストールの手順 Linux 用のインストールプログラム jdk-6-rc-linux-i586.bin をダウンロード
(RPMの形式もあるが、これも管理者権限が必要になる) 適当なディレクトリで実行 sh jdk-6-rc-linux-i586.bin 作業したディレクトリの下に展開される jdk1.6.0/bin を PATH の先頭に追加

5 設定ファイルの例 .profile if [ `uname` = "Linux" ]; then
PATH=~/jdk1.6.0/bin:.:$PATH export PATH fi

6 JAXB を使ってみよう(1) xjc, schemagen ツールの利用 JavaからXMLへ、XMLからJavaへの確認
ビルドファイルは不要 javac と java のみ!

7 JAXBを使ってみよう(2) RESTful な Webサービスへのアクセス   これも xjc,javac と java だけでできるはず

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

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

10 JAX-WS for REST の現状 一部の仕様が流動的(?) バグ有り(?) 情報も少ない 参照) Marc Hadley氏のブログ

11 サンプル(Yahoo Image検索) Yahoo Image Search の API
XML Schema も公開

12 サンプル実行までの手順 スキーマから xjc でJavaのソースを生成 (この時、一部手を入れる必要あり? どうなったのだろう?)
生成されたソースのコンパイル(javac) クライアントのコンパイル(javac) 実行(java)

13 xjc と生成されるソース xjc ImageSearchResponse..xsd yahoo/srchmi 以下に
ResultSet.java, ResultType.java, ThumbnailType.java ObjectFactory.java, package-info.java

14 ちょっと修正が必要だったが? ResultSet.java @XmlRootElement(name = “ResultSet”)
public class ResultSet { @XmlRootElement(name = "ResultSet") あれ?名前空間の指定が見当たらない!

15 またまた仕様が変更された? 名前空間の情報は package-info.java に記述されている package-info.java
@javax.xml.bind.annotation.XmlSchema( namespace = "urn:yahoo:srchmi", elementFormDefault = javax.xml.bind.annotation.XmlNsForm. QUALIFIED) package yahoo.srchmi;

16 サンプルソース(1) 前回と同じ URI nsURI = new URI("urn:yahoo:srchmi");
QName serviceName = new QName("yahoo",nsURI.toString()); QName portName = new QName("yahoo_port",nsURI.toString()); Service s = Service.create(serviceName);

17 サンプルソース(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());

18 サンプルソース(3) JAXBContext jbc = JAXBContext.newInstance( "yahoo.yn" );
Dispatch<Object> d = s.createDispatch(portName, jbc, Service.Mode.PAYLOAD); Map<String, Object> requestContext = d.getRequestContext(); requestContext.put( MessageContext.HTTP_REQUEST_METHOD, "GET");

19 サンプルのソース(4) 前回は StreamSource ss = (StreamSource)d.invoke(null);
Unmarshaller u = jbc.createUnmarshaller(); ResultSet rs = (ResultSet)u.unmarshal(ss);

20 サンプルのソース(4) 今回は ResultSet rs = (ResultSet)d.invoke(null);
for (ResultType r: rs.getResult()) { System.out.println( r.getTitle() + “ “ + r.getClickUrl() ); } かなり簡略化された仕様に変更

21 ビルドファイルはいりません xjc ImageSearchResponse.xsd javac yahoo/srchmi/*.java
javac YahooImageTest.java java YahooImageTest

22 通常のWebサービスも簡単に ただし、サーバとの互換性が・・・ サーバの側も新しい仕様にしましょう
Linux 用の最新の GlassFish で試す? (これは次回に)


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

Similar presentations


Ads by Google