1 / 14

Web サービス II( 第3回)

Web サービス II( 第3回). 200 7 年 10 月 10 日. この時間の目標. JAXB の応用 RESTful な Web サービスへのアクセス. JAXB( 再確認 ). JAXB(Java architecture for XML Binding) Java と XML とのマッピングを提供 新しい Web サービスを支える基礎技術 アノテーションをフルに活用. RESTful な Web サービス. REST(Representational State Transfer)

breck
Télécharger la présentation

Web サービス II( 第3回)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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 http://developer.yahoo.com/search/image/V1/imageSearch.html • XML Schema も公開 http://search.yahooapis.com/ImageSearchService/V1/ImageSearchResponse.xsd

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

  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サービスへアクセスするクライアント コンパイル、実行 • 帰ってきた情報の処理

More Related