Metro の御紹介 <ul><li>川口耕介 </li></ul><ul><li>Sun Microsystems, Inc. </li></ul>
アジェンダ <ul><li>Metro とは? </li></ul><ul><li>主な機能 </li></ul><ul><li>デザイン </li></ul><ul><li>コミュニティ </li></ul><ul><li>ロードマップ </...
<ul><li>Metro とは? </li></ul>
Metro とは? <ul><li>GlassFish の一翼を担う SOAP ウェブ・サービス・フレームワーク </li></ul><ul><li>主に JAX-WS RI + WSIT </li></ul><ul><ul><li>JAX-W...
Metro の中身 XML 処理 セキュリティ Metro – GlassFish Web Services Stack metro.dev.java.net JAXB JAXP SAAJ コア部分 トラン ザクション WS-RM 拡張機能 S...
パイプライン処理 <ul><li>クライアント </li></ul><ul><li>サーバ </li></ul>HTTP Security WS-A Reliability TX Stub Invoker Z Y X W TubeHead Me...
もしくは…
<ul><li>Metro の機能 </li></ul>
JAX-WS 2.1 API <ul><li>Metro プログラミングモデルの柱 </li></ul><ul><ul><li>WS を   インターフェース越しのメソッド呼出として扱う </li></ul></ul><ul><li>WSDL ...
JAXB 2.1 API <ul><li>XML スキーマを Java ビーンにマッピング </li></ul><ul><li>XML 入出力を簡単に </li></ul><ul><li>XML Schema 1.0 の全てをサポート </li...
付加機能部分 : WSIT <ul><li>End-to-end  セキュリティ </li></ul><ul><ul><li>トランスポートのセキュリティ </li></ul></ul><ul><ul><li>メッセージのセキュリティ </li...
標準のサポート <ul><li>しかも、極力自動的に </li></ul><ul><ul><li>バイナリデータ取扱の効率化  (MTOM) </li></ul></ul><ul><ul><li>複数の SOAP バージョン </li></ul...
拡張コンポーネント <ul><li>様々なトランスポート </li></ul><ul><ul><li>HTTP, HTTPS </li></ul></ul><ul><ul><li>SMTP </li></ul></ul><ul><ul><li>...
先進的な機能 <ul><li>Stateful  ウェブ・サービス </li></ul><ul><li>非同期処理 </li></ul><ul><li>複数のサービスインスタンスを活用 </li></ul><ul><ul><li>HTTP セッ...
相互運用性 <ul><li>業界標準を色々サポート </li></ul><ul><ul><li>SOAP 1.1/1.2, WSDL 1.1, WS-Addressing, MTOM, </li></ul></ul><ul><ul><li>WS...
Metro / .NET  相互運用性 Client Endpoint Client Endpoint Metro .NET 3.0
動作環境 <ul><li>GlassFish v2, v3 には最初から入ってます </li></ul><ul><li>他の多くのコンテナにも </li></ul><ul><ul><li>JBoss WS 2.1.0 </li></ul></u...
ツール <ul><li>NetBeans 組み込みのツール群 </li></ul><ul><li>コマンドラインツール </li></ul><ul><li>Ant タスク </li></ul><ul><li>Maven プラグイン </li><...
 
実際にやってみる <ul><li>一番単純なウェブサービス </li></ul><ul><ul><li>Java -> XML -> Java </li></ul></ul><ul><li>発展形 </li></ul><ul><ul><li>H...
実際にやってみる <ul><li>信頼性のあるウェブサービス </li></ul><ul><ul><li>WS-ReliableMessaging </li></ul></ul><ul><li>Metro の直接のユーザーが使うことはあまりない...
実際にやってみる <ul><li>FastInfoset </li></ul>
パフォーマンス <ul><li>Axis2 1.1.1 と比較して、 30%-100% 高速 </li></ul>詳細: http://weblogs.java.net/blog/kohsuke/archive/2007/02/jaxws_ri...
<ul><li>コミュニティ </li></ul>
コミュニティ <ul><li>Java.net  上で「見える」開発 </li></ul><ul><ul><li>ソースコード , ML,  デザインディスカッション </li></ul></ul><ul><ul><li>Hudson による継...
Metro 世界制覇計画 <ul><li>Sun 以外のアプリケーションサーバでも使われています </li></ul><ul><ul><li>BEA WebLogic Server 10 </li></ul></ul><ul><ul><li>J...
将来の展望 <ul><li>高可用性 </li></ul><ul><ul><li>Stateful web service </li></ul></ul><ul><ul><li>クラスタによるフェイルオーバーなど </li></ul></ul>...
Reference <ul><li>Metro </li></ul><ul><ul><li>metro.dev.java.net </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul...
Jersey の御紹介 <ul><li>川口耕介 </li></ul><ul><li>Sun Microsystems, Inc. </li></ul>
お品書き <ul><li>REST 入門 </li></ul><ul><li>Java に REST API が必要な訳 </li></ul><ul><li>API について </li></ul><ul><li>デモ </li></ul>
REST vs. SOAP :  SOAP まとめ <ul><li>HTTP 上に別なプロトコル (SOAP) を載せる </li></ul><ul><li>XML だけに絞ってデータモデルをリッチに </li></ul><ul><li>1から...
REST vs. SOAP: REST <ul><li>あれ? HTTP しか使ってないよ </li></ul><ul><ul><li>新しい物を発明しないでもできる? </li></ul></ul><ul><li>ウェブサイトを作るようにウェ...
ウェブサイトを作るように <ul><li>HTTP URL の階層構造を素直に使う </li></ul><ul><ul><li>http://d.hatena.ne.jp/kkawa/20081012/p2 </li></ul></ul><ul...
例 <ul><li>音楽サイト </li></ul><ul><ul><li>/music/artists </li></ul></ul><ul><ul><ul><li>/music/artists/{id} </li></ul></ul></u...
テストに出る REST <ul><li>RE presentational  S tate  T ransfer </li></ul><ul><li>リソース </li></ul><ul><ul><li>URI で識別される、物 </li></...
お品書き <ul><li>REST 入門 </li></ul><ul><li>Java に REST API が必要な訳 </li></ul><ul><li>API について </li></ul><ul><li>デモ </li></ul>
サーブレットでアーティストクラスを書く public class Artist extends HttpServlet { public enum SupportedOutputFormat {XML, JSON}; protected voi...
これはちょっと… <ul><li>JSF 等は HTTP を独自にモデリングするので REST に向いてない </li></ul><ul><ul><li>でも 21 世紀にサーブレットを書くのは嫌だ </li></ul></ul><ul><li...
お品書き <ul><li>REST 入門 </li></ul><ul><li>Java に REST API が必要な訳 </li></ul><ul><li>API について </li></ul><ul><li>デモ </li></ul>
POJO @UriTemplate(&quot;/artists/{id}&quot;)‏ public class Artist { @ProduceMime(&quot;application/xml&quot;)‏ @HttpMethod...
メソッドの戻り値 <ul><li>HttpResponse </li></ul><ul><ul><li>HTTP プロトコルのイディオムに相当 </li></ul></ul><ul><ul><li>30x リダイレクト、 201 リソース生成な...
メソッドのパラメータ <ul><li>アノーテーションを使ってパラメータを注入 </li></ul><ul><ul><li>@UriParam, @QueryParam, @MatrixParam, @HeaderParam </li></ul...
お品書き <ul><li>REST 入門 </li></ul><ul><li>Java に REST API が必要な訳 </li></ul><ul><li>API について </li></ul><ul><li>デモ </li></ul>
参考情報 <ul><li>JSR-311 </li></ul><ul><ul><li>https://jsr311.dev.java.net </li></ul></ul><ul><li>Jersey </li></ul><ul><ul><li...
BACK UP SLIDES <ul><li>Nothing to see beyond here </li></ul>
<ul><li>アーキテクチャ </li></ul>
効率のよい SOAP Message の内部表現 Message Packet Messages Headers AttachmentSet Payload Attachment Factories HeaderList Header
Upcoming SlideShare
Loading in …5
×

ホット・トピック・セミナー「Metro」

2,690 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,690
On SlideShare
0
From Embeds
0
Number of Embeds
346
Actions
Shares
0
Downloads
17
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

ホット・トピック・セミナー「Metro」

  1. 1. Metro の御紹介 <ul><li>川口耕介 </li></ul><ul><li>Sun Microsystems, Inc. </li></ul>
  2. 2. アジェンダ <ul><li>Metro とは? </li></ul><ul><li>主な機能 </li></ul><ul><li>デザイン </li></ul><ul><li>コミュニティ </li></ul><ul><li>ロードマップ </li></ul>
  3. 3. <ul><li>Metro とは? </li></ul>
  4. 4. Metro とは? <ul><li>GlassFish の一翼を担う SOAP ウェブ・サービス・フレームワーク </li></ul><ul><li>主に JAX-WS RI + WSIT </li></ul><ul><ul><li>JAX-WS が基盤部分と API </li></ul></ul><ul><ul><li>WSIT が付加機能と .NET 相互運用性 </li></ul></ul><ul><li>高性能・高い拡張性 </li></ul><ul><li>再利用性の高い部品プロジェクトから構築 </li></ul><ul><ul><li>個別に利用可能 </li></ul></ul>
  5. 5. Metro の中身 XML 処理 セキュリティ Metro – GlassFish Web Services Stack metro.dev.java.net JAXB JAXP SAAJ コア部分 トラン ザクション WS-RM 拡張機能 SOAP SMTP Spring JSON HTTP . . . . . .
  6. 6. パイプライン処理 <ul><li>クライアント </li></ul><ul><li>サーバ </li></ul>HTTP Security WS-A Reliability TX Stub Invoker Z Y X W TubeHead Message Message invoke 01010001... 11001010... return Message Message invoke return
  7. 7. もしくは…
  8. 8. <ul><li>Metro の機能 </li></ul>
  9. 9. JAX-WS 2.1 API <ul><li>Metro プログラミングモデルの柱 </li></ul><ul><ul><li>WS を インターフェース越しのメソッド呼出として扱う </li></ul></ul><ul><li>WSDL を隠蔽 </li></ul><ul><li>POJO プログラミング </li></ul><ul><li>デスクリプタなし </li></ul><ul><li>プロトコル・トランスポートに非依存 </li></ul>
  10. 10. JAXB 2.1 API <ul><li>XML スキーマを Java ビーンにマッピング </li></ul><ul><li>XML 入出力を簡単に </li></ul><ul><li>XML Schema 1.0 の全てをサポート </li></ul><ul><li>高性能 </li></ul><ul><li>面白い拡張が色々 </li></ul>
  11. 11. 付加機能部分 : WSIT <ul><li>End-to-end セキュリティ </li></ul><ul><ul><li>トランスポートのセキュリティ </li></ul></ul><ul><ul><li>メッセージのセキュリティ </li></ul></ul><ul><ul><li>暗号・署名等の関連規格 </li></ul></ul><ul><ul><li>アイデンティティの連携の関連規格 (WS-Trust) </li></ul></ul><ul><li>リライアビリティ </li></ul><ul><ul><li>マルチホップ環境での再送・順序制御 </li></ul></ul><ul><li>分散トランザクション </li></ul><ul><ul><li>EJB/RMI のような事を WS 上で </li></ul></ul><ul><ul><li>.NET も含めて </li></ul></ul>
  12. 12. 標準のサポート <ul><li>しかも、極力自動的に </li></ul><ul><ul><li>バイナリデータ取扱の効率化 (MTOM) </li></ul></ul><ul><ul><li>複数の SOAP バージョン </li></ul></ul><ul><ul><li>バイナリフォーマット (FastInfoset) </li></ul></ul>
  13. 13. 拡張コンポーネント <ul><li>様々なトランスポート </li></ul><ul><ul><li>HTTP, HTTPS </li></ul></ul><ul><ul><li>SMTP </li></ul></ul><ul><ul><li>TCP/IP 上に直接 </li></ul></ul><ul><ul><li>JMS </li></ul></ul><ul><ul><li>In-VM </li></ul></ul><ul><li>様々なデプロイメント </li></ul><ul><ul><li>全自動方式 ( 又の名を JSR-109) </li></ul></ul><ul><ul><li>Servlet 方式 </li></ul></ul><ul><ul><li>Spring 方式 </li></ul></ul>
  14. 14. 先進的な機能 <ul><li>Stateful ウェブ・サービス </li></ul><ul><li>非同期処理 </li></ul><ul><li>複数のサービスインスタンスを活用 </li></ul><ul><ul><li>HTTP セッション毎 </li></ul></ul><ul><ul><li>スレッド毎 </li></ul></ul>
  15. 15. 相互運用性 <ul><li>業界標準を色々サポート </li></ul><ul><ul><li>SOAP 1.1/1.2, WSDL 1.1, WS-Addressing, MTOM, </li></ul></ul><ul><ul><li>WS-I Basic Profile 1.x, SOAP Attachment Profile </li></ul></ul><ul><ul><li>WS-ReliableMessaging, WS-SecureConversation, WS-Trust, WS-Security, WS-Policy, WS-AtomicTransaction, … </li></ul></ul><ul><li>Microsoft と共同で .NET 相互運用性を検証 </li></ul><ul><ul><li>テスト、テスト、テスト… </li></ul></ul><ul><ul><li>定例ミーティング </li></ul></ul><ul><ul><li>「 plugfest 」イベント </li></ul></ul><ul><ul><li>きちんと動く事を地道に検証しました </li></ul></ul>
  16. 16. Metro / .NET 相互運用性 Client Endpoint Client Endpoint Metro .NET 3.0
  17. 17. 動作環境 <ul><li>GlassFish v2, v3 には最初から入ってます </li></ul><ul><li>他の多くのコンテナにも </li></ul><ul><ul><li>JBoss WS 2.1.0 </li></ul></ul><ul><ul><li>BEA WebLogic 10 </li></ul></ul><ul><ul><li>TmaxSoft JEUS </li></ul></ul><ul><li>任意のサーブレットコンテナで </li></ul><ul><ul><li>但し一部機能制限あり </li></ul></ul><ul><li>コンテナがなくても OK </li></ul><ul><ul><li>JavaSE6 light-weight HTTP server </li></ul></ul>
  18. 18. ツール <ul><li>NetBeans 組み込みのツール群 </li></ul><ul><li>コマンドラインツール </li></ul><ul><li>Ant タスク </li></ul><ul><li>Maven プラグイン </li></ul><ul><li>Eclipse 用のツールも進行中 </li></ul>
  19. 20. 実際にやってみる <ul><li>一番単純なウェブサービス </li></ul><ul><ul><li>Java -> XML -> Java </li></ul></ul><ul><li>発展形 </li></ul><ul><ul><li>HTTPS 上で通信してセキュリティ </li></ul></ul><ul><ul><li>WSDL を先に書いてプロトコルを合意 </li></ul></ul><ul><ul><li>他の言語で書いたサービスを使う </li></ul></ul>
  20. 21. 実際にやってみる <ul><li>信頼性のあるウェブサービス </li></ul><ul><ul><li>WS-ReliableMessaging </li></ul></ul><ul><li>Metro の直接のユーザーが使うことはあまりない </li></ul>
  21. 22. 実際にやってみる <ul><li>FastInfoset </li></ul>
  22. 23. パフォーマンス <ul><li>Axis2 1.1.1 と比較して、 30%-100% 高速 </li></ul>詳細: http://weblogs.java.net/blog/kohsuke/archive/2007/02/jaxws_ri_21_ben.html
  23. 24. <ul><li>コミュニティ </li></ul>
  24. 25. コミュニティ <ul><li>Java.net 上で「見える」開発 </li></ul><ul><ul><li>ソースコード , ML, デザインディスカッション </li></ul></ul><ul><ul><li>Hudson による継続的インテグレーション </li></ul></ul><ul><li>オープンソース </li></ul><ul><ul><li>CDDL と GPLv2 のデュアルライセンス </li></ul></ul><ul><li>コミッタになるのも簡単です </li></ul><ul><ul><li>SCA にサインするだけ </li></ul></ul><ul><li>ユーザー・コミュニティ主導の機能開発 </li></ul><ul><ul><li>Spring や JSON サポートなど </li></ul></ul>
  25. 26. Metro 世界制覇計画 <ul><li>Sun 以外のアプリケーションサーバでも使われています </li></ul><ul><ul><li>BEA WebLogic Server 10 </li></ul></ul><ul><ul><li>JBoss WS 2.1.0 </li></ul></ul><ul><ul><li>IBM JDK6 </li></ul></ul><ul><ul><li>Salesforce.com APEX8.0 toolkit </li></ul></ul>
  26. 27. 将来の展望 <ul><li>高可用性 </li></ul><ul><ul><li>Stateful web service </li></ul></ul><ul><ul><li>クラスタによるフェイルオーバーなど </li></ul></ul><ul><li>JMX による管理性の向上 </li></ul><ul><li>Jersey の取り込み </li></ul><ul><li>ポリシー機能の強化 </li></ul>
  27. 28. Reference <ul><li>Metro </li></ul><ul><ul><li>metro.dev.java.net </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul><ul><ul><li>https://forums.java.net/jive/forum.jspa?forumID=46 </li></ul></ul><ul><ul><li>http://feeds.feedburner.com/MetroBlogs </li></ul></ul><ul><li>GlassFish (glassfish.java.net)‏ </li></ul><ul><li>The Aquarium (blogs.sun.com/theaquarium)‏ </li></ul>
  28. 29. Jersey の御紹介 <ul><li>川口耕介 </li></ul><ul><li>Sun Microsystems, Inc. </li></ul>
  29. 30. お品書き <ul><li>REST 入門 </li></ul><ul><li>Java に REST API が必要な訳 </li></ul><ul><li>API について </li></ul><ul><li>デモ </li></ul>
  30. 31. REST vs. SOAP : SOAP まとめ <ul><li>HTTP 上に別なプロトコル (SOAP) を載せる </li></ul><ul><li>XML だけに絞ってデータモデルをリッチに </li></ul><ul><li>1からやり直すチャンスだった </li></ul><ul><li>高度なアドオンプロトコルが色々出来たがレイヤリングが複雑 </li></ul><ul><ul><li>人間が目で見てもわからない </li></ul></ul><ul><li>XML 縛りが思ったよりメリットなし </li></ul><ul><li>フレームワークを作るのが大変 </li></ul>
  31. 32. REST vs. SOAP: REST <ul><li>あれ? HTTP しか使ってないよ </li></ul><ul><ul><li>新しい物を発明しないでもできる? </li></ul></ul><ul><li>ウェブサイトを作るようにウェブサービスを作る </li></ul><ul><li>昔からある仕様で使えそうなのを組み合わせる </li></ul><ul><ul><li>誰も使ってなかった HTTP の仕様の一部とか </li></ul></ul><ul><ul><li>小さなフレームワークで済むようになった </li></ul></ul><ul><ul><li>良く言えば経済的、悪く言えば継ぎ接ぎ </li></ul></ul><ul><li>インターフェースが厳密ではない </li></ul><ul><ul><li>相互運用とか煩いことは言わない </li></ul></ul>
  32. 33. ウェブサイトを作るように <ul><li>HTTP URL の階層構造を素直に使う </li></ul><ul><ul><li>http://d.hatena.ne.jp/kkawa/20081012/p2 </li></ul></ul><ul><ul><li>排除される例 : </li></ul></ul><ul><ul><ul><li>http://www.amazon.com/gp/-/x/15322209_a/:qri/ </li></ul></ul></ul><ul><ul><ul><li>ウェブフレームワークの中には意外にこれが多い </li></ul></ul></ul>
  33. 34. 例 <ul><li>音楽サイト </li></ul><ul><ul><li>/music/artists </li></ul></ul><ul><ul><ul><li>/music/artists/{id} </li></ul></ul></ul><ul><ul><ul><li>/music/recordings </li></ul></ul></ul><ul><ul><ul><li>/music/recordings/{id} </li></ul></ul></ul><ul><ul><ul><li>/music/artists/{id}/recordings </li></ul></ul></ul><ul><ul><ul><li>/music/genre/{id} </li></ul></ul></ul><ul><ul><ul><li>/music/format/{id} </li></ul></ul></ul><ul><li>XML と JSON をサポートしよう </li></ul>
  34. 35. テストに出る REST <ul><li>RE presentational S tate T ransfer </li></ul><ul><li>リソース </li></ul><ul><ul><li>URI で識別される、物 </li></ul></ul><ul><ul><li>「表現」によって具体化される </li></ul></ul><ul><li>メソッド </li></ul><ul><ul><li>リソースによらず共通。 HTTP メソッド </li></ul></ul><ul><ul><li>「表現」をやりとりする </li></ul></ul><ul><li>表現 </li></ul><ul><ul><li>リソースの状態を表す HTML,XML,JSON,… </li></ul></ul><ul><ul><li>多数のフォーマットが有り得る </li></ul></ul>
  35. 36. お品書き <ul><li>REST 入門 </li></ul><ul><li>Java に REST API が必要な訳 </li></ul><ul><li>API について </li></ul><ul><li>デモ </li></ul>
  36. 37. サーブレットでアーティストクラスを書く public class Artist extends HttpServlet { public enum SupportedOutputFormat {XML, JSON}; protected void doGet(HttpServletRequest request, HttpServletResponse response)‏ throws ServletException, IOException { String accept = request.getHeader(&quot;accept&quot;).toLowerCase(); String acceptableTypes[] = accept.split(&quot;,&quot;); SupportedOutputFormat outputType = null; for (String acceptableType: acceptableTypes) { if (acceptableType.contains(&quot;*/*&quot;) || acceptableType.contains(&quot;application/*&quot;) || acceptableType.contains(&quot;application/xml&quot;)) { outputType=SupportedOutputFormat.XML; break; } else if (acceptableType.contains(&quot;application/json&quot;)) { outputType=SupportedOutputFormat.JSON; break; } } if (outputType==null)‏ response.sendError(415); String path = request.getPathInfo(); String pathSegments[] = path.split(&quot;/&quot;); String artist = pathSegments[1]; if (pathSegments.length < 2 && pathSegments.length > 3)‏ response.sendError(404); else if (pathSegments.length == 3 && pathSegments[2].equals(&quot;recordings&quot;)) { if (outputType == SupportedOutputFormat.XML)‏ writeRecordingsForArtistAsXml(response, artist); else writeRecordingsForArtistAsJson(response, artist); } else { if (outputType == SupportedOutputFormat.XML)‏ writeArtistAsXml(response, artist); else writeArtistAsJson(response, artist); } } private void writeRecordingsForArtistAsXml(HttpServletResponse response, String artist) { ... } private void writeRecordingsForArtistAsJson(HttpServletResponse response, String artist) { ... } private void writeArtistAsXml(HttpServletResponse response, String artist) { ... } private void writeArtistAsJson(HttpServletResponse response, String artist) { ... } }
  37. 38. これはちょっと… <ul><li>JSF 等は HTTP を独自にモデリングするので REST に向いてない </li></ul><ul><ul><li>でも 21 世紀にサーブレットを書くのは嫌だ </li></ul></ul><ul><li>もう少し抽象度の高い API が欲しい </li></ul><ul><ul><li>REST のイディオムを簡単に </li></ul></ul><ul><ul><li>コードはできるだけ少なく </li></ul></ul><ul><ul><li>Java5 の機能もどんどん使って </li></ul></ul><ul><li>念のため HTTP も直接叩けるように </li></ul><ul><ul><li>部品の組み合わせ方は今も模索中なので </li></ul></ul>
  38. 39. お品書き <ul><li>REST 入門 </li></ul><ul><li>Java に REST API が必要な訳 </li></ul><ul><li>API について </li></ul><ul><li>デモ </li></ul>
  39. 40. POJO @UriTemplate(&quot;/artists/{id}&quot;)‏ public class Artist { @ProduceMime(&quot;application/xml&quot;)‏ @HttpMethod InputStream getXml( @UriParam(&quot;id&quot;) String artist) { ... } ... }
  40. 41. メソッドの戻り値 <ul><li>HttpResponse </li></ul><ul><ul><li>HTTP プロトコルのイディオムに相当 </li></ul></ul><ul><ul><li>30x リダイレクト、 201 リソース生成など </li></ul></ul><ul><li>Representation<T> </li></ul><ul><ul><li>「表現」 (T) と付随する HTTP ヘッダ </li></ul></ul><ul><li>裸の T </li></ul><ul><ul><li>必須の HTTP ヘッダが T から自動で定まる場合 </li></ul></ul><ul><ul><li>SPI によって拡張可能 </li></ul></ul><ul><ul><li>XML や JSON 、画像など </li></ul></ul>
  41. 42. メソッドのパラメータ <ul><li>アノーテーションを使ってパラメータを注入 </li></ul><ul><ul><li>@UriParam, @QueryParam, @MatrixParam, @HeaderParam </li></ul></ul><ul><ul><li>切り出しと型変換の手間が省ける </li></ul></ul><ul><li>Entity<T> もしくは裸の T </li></ul><ul><ul><li>リクエストボディに相当 </li></ul></ul>@HttpMethod public Recording updateRecording( @UriParam(&quot;id&quot;) String id, Recording updatedRecording)‏
  42. 43. お品書き <ul><li>REST 入門 </li></ul><ul><li>Java に REST API が必要な訳 </li></ul><ul><li>API について </li></ul><ul><li>デモ </li></ul>
  43. 44. 参考情報 <ul><li>JSR-311 </li></ul><ul><ul><li>https://jsr311.dev.java.net </li></ul></ul><ul><li>Jersey </li></ul><ul><ul><li>https://jersey.dev.java.net </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul><ul><li>Blogs </li></ul><ul><ul><li>http://blogs.sun.com/sandoz </li></ul></ul><ul><ul><li>http://weblogs.java.net/blog/mhadley/ </li></ul></ul><ul><ul><li>http://blogs.sun.com/japod </li></ul></ul>
  44. 45. BACK UP SLIDES <ul><li>Nothing to see beyond here </li></ul>
  45. 46. <ul><li>アーキテクチャ </li></ul>
  46. 47. 効率のよい SOAP Message の内部表現 Message Packet Messages Headers AttachmentSet Payload Attachment Factories HeaderList Header

×