Presentation is loading. Please wait.

Presentation is loading. Please wait.

Webサービス II(第3回) 2007年10月10日.

Similar presentations


Presentation on theme: "Webサービス II(第3回) 2007年10月10日."— Presentation transcript:

1 Webサービス II(第3回) 2007年10月10日

2 この時間の目標 JAXBの応用 RESTful なWebサービスへのアクセス

3 JAXB(再確認) JAXB(Java architecture for XML Binding)
Java と XML とのマッピングを提供 新しい Webサービスを支える基礎技術 アノテーションをフルに活用

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

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

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

7 サンプル実行までの手順 スキーマから xjc でJavaのソースを生成 生成されたソースのコンパイル(javac)

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

9 package-info.java ?? 名前空間の情報のみのソース package文へのアノテーション
@javax.xml.bind.annotation.XmlSchema(  namespace = "urn:yahoo:srchmi", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) package yahoo.srchmi;

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

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

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

13 サンプルのソース(4) ResultSet rs = (ResultSet)d.invoke(null);
for (ResultType r: rs.getResult()) { System.out.println( r.getTitle() + “ “ + r.getClickUrl() ); }

14 実行までの手順 Schemaファイルを xjc で処理 (Javaのソースを自動生成) 生成されたソースのコンパイル
Webサービスへアクセスするクライアント コンパイル、実行 帰ってきた情報の処理


Download ppt "Webサービス II(第3回) 2007年10月10日."

Similar presentations


Ads by Google