Applicazioni RESTful con Jersey<br />Come realizzare un microblog in 10 minuti<br />
Stefano Dellafiore<br />Senior Consultant @<br />Milano<br />About us<br />
Riccardo Solimena<br />Senior Consultant @<br />Lugano<br />About us<br />
JIP – Java  Italian Portal<br />Sito Internet - http://www.javaportal.it/<br /><ul><li>Il portale è stato realizzato e mod...
Tutte le attività di JavaPortal sono gratuite.
La community è sempre lieta di accogliere nuovi collaboratori che contribuiscano all’arricchimento del sito,che abbiano nu...
ReST e Java: JAX-RS (JSR 311)
Le implementazioni di JAX-RS
Jersey
Demo!</li></li></ul><li>ReST: la teoria – Cosa NON è ReST<br /><ul><li>Non è (solo) una “buzzword”
Non è un framework
Non è un prodotto
Non è la soluzione di tutti i problemi</li></li></ul><li>Ciao Roy, cos’è questo rest di cui tutti parlano?<br />ReST: la t...
RepresentationalState Transfer, uno stile architetturale per un sistema di ipermedia distribuito”<br />ReST: la teoria – C...
…<br />ReST: la teoria – Cosa è ReST<br />Chiediamolo a Roy*…<br />* Roy T. Fielding Ph.D dissertation, “Architectural Sty...
Ecco, bene. Dovevo fare la tesi di dottorato, così ho preso l’HTTP, ne ho estratto i principi base e con il marketing abbi...
… ……<br />ReST: la teoria – Cosa è ReST<br />Chiediamolo a Roy*…<br />* Roy T. Fielding Ph.D dissertation, “Architectural ...
sonosicurochesaidicosastoparlando.<br />Tempo fa ho scrittol’HTTP, lo conosci?<br />ReST: la teoria – Cosa è ReST<br />Chi...
Sìsì!!<br />ReST: la teoria – Cosa è ReST<br />Chiediamolo a Roy*…<br />* Roy T. Fielding Ph.D dissertation, “Architectura...
Ecco, bene. Dovevo fare la tesi di dottorato, così ho preso l’HTTP, ne ho estratto i principi base e con il marketing abbi...
Chiediamolo a Roy*…<br />Sìsì!!<br />…<br />Ciao Roy, cos’è questo rest di cui tutti parlano?<br />Tutto chiaro adesso, gr...
Principi del REST: Intro<br />
Principi del REST: 1 di 4<br />Identificazione univoca delle risorse<br /><ul><li>Ogni risorsa ha un Id univoco (ad esempi...
Principi del REST: 1 di 4<br />Identificazione univoca delle risorse<br /><ul><li>Ogni risorsa ha un Id univoco (ad esempi...
Principi del REST: 2 di 4<br />Interfaccia d’accesso uniforme<br /><ul><li>Le risorse sono manipolate attraverso lo stesso...
Principi del REST: 2 di 4<br />Interfaccia d’accesso uniforme<br /><ul><li>Le risorse sono manipolate attraverso lo stesso...
Principi del REST: 2 di 4<br />Interfaccia d’accesso uniforme<br /><ul><li>Le risorse sono manipolate attraverso lo stesso...
Principi del REST: 2 di 4<br />Interfaccia d’accesso uniforme<br /><ul><li>Le risorse sono manipolate attraverso lo stesso...
Principi del REST: 2 di 4<br />Interfaccia d’accesso uniforme<br /><ul><li>Le risorse sono manipolate attraverso lo stesso...
Principi del REST: 3 di 4<br />Comunicazione stateless di rappresentazioni delle risorse<br /><ul><li>Dai al client ciò ch...
Principi del REST: 3 di 4<br />Comunicazione stateless di rappresentazioni delle risorse<br /><ul><li>Dai al client ciò ch...
Principi del REST: 3 di 4<br />Comunicazione stateless di rappresentazioni delle risorse<br /><ul><li>Dai al client ciò ch...
HTTP è RESTful?<br />Ma HTTP non e’ gia’<br />tutto questo?<br />
HTTP è RESTful<br />Si’!!!<br />HTTP è RESTful<br />
HTTP è RESTful – Principi REST/HTTP<br />
Essere RESTful<br />
JAX-RS (JSR 311)<br />Api Java per lo sviluppo di Web ServicesReSTful<br />Versione attuale 1.1<br />inclusa nella piattaf...
Risorsa d’esempio<br />@Path(“/blogs/”)<br />Identifica il frammento di URI alla quale la risorsa risponderà<br />http://l...
Risorsa d’esempio<br />@Context<br />DependencyInjection<br />Principio di Hollywood – Non chiamarmi, ti chiamerò io <br ...
Risorsa d’esempio<br />@GET - @POST<br />Annotazioni sui metodi della classe che risponderanno alle corrispondenti chiamat...
Risorsa d’esempio<br />@Produces({“application/json”, “…”})<br />Indica il tipo di rappresentazione che il server dichiara...
Risorsa d’esempio<br />@Consumes({“application/xml”, “…”})<br />Indica il tipo di rappresentazione che il server dichiara ...
Risorsa d’esempio<br />@QueryParam<br />@PathParam<br />@FormParam<br />…<br />Utility per l’estrazione dei parametri dall...
Cosa avviene in pratica 1 di 2 <br />Request HTTP<br />GET http://roma.javaday.it/resources/blogs<br />
Cosa avviene in pratica 1 di 2 <br />Application<br />Resource 1<br />Resource 2<br />Resource N<br />
Cosa avviene in pratica 1 di 2 <br />
Cosa avviene in pratica 1 di 2 <br />Response<br />200 OK<br />Content-Type: text/xml<br />&lt;xml&gt;…&lt;/xml&gt;<br />
Cosa avviene in pratica 2 di 2<br />1.<br />2.<br />
Cosa avviene in pratica 2 di 2<br />1.<br />
Alcune Implementazioni (ad oggi)<br />
Il nostro Microblog<br />Creiamo un’applicazione web-based che permetta di editare semplici contenuti testuali (tweet) con...
Microblog - Layers<br />Client<br />Server<br />Helper & Converter<br />Glassfish v3<br />
Microblog - ER<br />
Microblog – Class Diagram<br />
Proxy Javascript<br />Server<br />Client<br />MicroblogResource<br />Microblog.js<br />Microblog<br />Http<br />MicroblogC...
Microblog - Funzionalità<br />
Cosa realizzeremo<br />POST<br />GET<br />DELETE<br />POST<br />DELETE<br />PUT<br />GET<br />
DEMO<br />10 min DEMO<br />
Upcoming SlideShare
Loading in …5
×

Solimena Dellafiore - Applicazioni RESTful con Jersey : come realizzare un microblog in 10 minuti

1,593 views

Published on

Attraverso l'approccio REST è possibile realizzare web service sfruttando al massimo l'eleganza e la potenza del protocollo HTTP. Mettendo mani al codice, si vedrà come sia possibile realizzare in 10 minuti un microblog RESTful, tipo twitter, e come i tool di sviluppo rendano il tutto ancora più semplice. Per la realizzazione del back end, si utilizzerà Jersey, la reference implementation Open Source di Sun della specifica JAX-RS (JSR-311), già integrata nella piattaforma JEE6.

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,593
On SlideShare
0
From Embeds
0
Number of Embeds
134
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Solimena Dellafiore - Applicazioni RESTful con Jersey : come realizzare un microblog in 10 minuti

  1. 1. Applicazioni RESTful con Jersey<br />Come realizzare un microblog in 10 minuti<br />
  2. 2. Stefano Dellafiore<br />Senior Consultant @<br />Milano<br />About us<br />
  3. 3. Riccardo Solimena<br />Senior Consultant @<br />Lugano<br />About us<br />
  4. 4. JIP – Java Italian Portal<br />Sito Internet - http://www.javaportal.it/<br /><ul><li>Il portale è stato realizzato e modellato in modo da accompagnare quei programmatori che vivono il proprio lavoro come passione e creatività professionale.
  5. 5. Tutte le attività di JavaPortal sono gratuite.
  6. 6. La community è sempre lieta di accogliere nuovi collaboratori che contribuiscano all’arricchimento del sito,che abbiano nuove idee e la voglia di curarle.</li></li></ul><li>Sommario<br /><ul><li>ReST: la teoria
  7. 7. ReST e Java: JAX-RS (JSR 311)
  8. 8. Le implementazioni di JAX-RS
  9. 9. Jersey
  10. 10. Demo!</li></li></ul><li>ReST: la teoria – Cosa NON è ReST<br /><ul><li>Non è (solo) una “buzzword”
  11. 11. Non è un framework
  12. 12. Non è un prodotto
  13. 13. Non è la soluzione di tutti i problemi</li></li></ul><li>Ciao Roy, cos’è questo rest di cui tutti parlano?<br />ReST: la teoria – Cosa è ReST<br />Chiediamolo a Roy*…<br />* Roy T. Fielding Ph.D dissertation, “Architectural Styles and the Design of Network-based Software Architectures”, (2000) <br />
  14. 14. RepresentationalState Transfer, uno stile architetturale per un sistema di ipermedia distribuito”<br />ReST: la teoria – Cosa è ReST<br />Chiediamolo a Roy*…<br />* Roy T. Fielding Ph.D dissertation, “Architectural Styles and the Design of Network-based Software Architectures”, (2000) <br />
  15. 15. …<br />ReST: la teoria – Cosa è ReST<br />Chiediamolo a Roy*…<br />* Roy T. Fielding Ph.D dissertation, “Architectural Styles and the Design of Network-based Software Architectures”, (2000) <br />
  16. 16. Ecco, bene. Dovevo fare la tesi di dottorato, così ho preso l’HTTP, ne ho estratto i principi base e con il marketing abbiamo pensato ad un nome “cool”.<br />REST è il risultato<br />Ok, uno stile architetturale è un insieme di vincoli imposti all’interazione fra componenti, al fine di ottenere alcune proprietà desiderabili quali scalabilità e uniformità d’accesso<br />ReST: la teoria – Cosa è ReST<br />Chiediamolo a Roy*…<br />* Roy T. Fielding Ph.D dissertation, “Architectural Styles and the Design of Network-based Software Architectures”, (2000) <br />
  17. 17. … ……<br />ReST: la teoria – Cosa è ReST<br />Chiediamolo a Roy*…<br />* Roy T. Fielding Ph.D dissertation, “Architectural Styles and the Design of Network-based Software Architectures”, (2000) <br />
  18. 18. sonosicurochesaidicosastoparlando.<br />Tempo fa ho scrittol’HTTP, lo conosci?<br />ReST: la teoria – Cosa è ReST<br />Chiediamolo a Roy*…<br />* Roy T. Fielding Ph.D dissertation, “Architectural Styles and the Design of Network-based Software Architectures”, (2000) <br />
  19. 19. Sìsì!!<br />ReST: la teoria – Cosa è ReST<br />Chiediamolo a Roy*…<br />* Roy T. Fielding Ph.D dissertation, “Architectural Styles and the Design of Network-based Software Architectures”, (2000) <br />
  20. 20. Ecco, bene. Dovevo fare la tesi di dottorato, così ho preso l’HTTP, ne ho estratto i principi base e con il marketing abbiamo pensato ad un nome “cool”.<br />REST è il risultato<br />ReST: la teoria – Cosa è ReST<br />Chiediamolo a Roy*…<br />* Roy T. Fielding Ph.D dissertation, “Architectural Styles and the Design of Network-based Software Architectures”, (2000) <br />
  21. 21. Chiediamolo a Roy*…<br />Sìsì!!<br />…<br />Ciao Roy, cos’è questo rest di cui tutti parlano?<br />Tutto chiaro adesso, grazie mille Roy.<br />ReST: la teoria – Cosa è ReST<br />* Roy T. Fielding Ph.D dissertation, “Architectural Styles and the Design of Network-based Software Architectures”, (2000) <br />
  22. 22. Principi del REST: Intro<br />
  23. 23. Principi del REST: 1 di 4<br />Identificazione univoca delle risorse<br /><ul><li>Ogni risorsa ha un Id univoco (ad esempio URI)</li></ul>Una url, una risorsa! <br />http://roma.javaday.it/squadra/blu<br />4<br />Java<br />1<br />7<br />10<br />
  24. 24. Principi del REST: 1 di 4<br />Identificazione univoca delle risorse<br /><ul><li>Ogni risorsa ha un Id univoco (ad esempio URI)</li></ul>Una url, una risorsa! <br />http://roma.javaday.it/giocatore/java<br />4<br />Java<br />1<br />7<br />10<br />
  25. 25. Principi del REST: 2 di 4<br />Interfaccia d’accesso uniforme<br /><ul><li>Le risorse sono manipolate attraverso lo stesso insieme di metodi</li></ul>CRUD<br />4<br />Java<br />1<br />7<br />
  26. 26. Principi del REST: 2 di 4<br />Interfaccia d’accesso uniforme<br /><ul><li>Le risorse sono manipolate attraverso lo stesso insieme di metodi</li></ul>CRUD<br />Create (crea giocatore)<br />4<br />Java<br />1<br />7<br />10<br />
  27. 27. Principi del REST: 2 di 4<br />Interfaccia d’accesso uniforme<br /><ul><li>Le risorse sono manipolate attraverso lo stesso insieme di metodi</li></ul>CRUD<br />Read(recupera giocatore o squadra)<br />4<br />Java<br />1<br />7<br />10<br />
  28. 28. Principi del REST: 2 di 4<br />Interfaccia d’accesso uniforme<br /><ul><li>Le risorse sono manipolate attraverso lo stesso insieme di metodi</li></ul>CRUD<br />Update (aggiorna giocatore)<br />4<br />Java<br />1<br />7<br />10<br />
  29. 29. Principi del REST: 2 di 4<br />Interfaccia d’accesso uniforme<br /><ul><li>Le risorse sono manipolate attraverso lo stesso insieme di metodi</li></ul>CRUD<br />Delete (elimina squadra)<br />DELETE http://roma.javaday.it/squadra/blu<br />4<br />Java<br />1<br />7<br />10<br />
  30. 30. Principi del REST: 3 di 4<br />Comunicazione stateless di rappresentazioni delle risorse<br /><ul><li>Dai al client ciò che ti chiede!</li></ul>non mantengono lo stato…<br />Ma… chi sei?<br />
  31. 31. Principi del REST: 3 di 4<br />Comunicazione stateless di rappresentazioni delle risorse<br /><ul><li>Dai al client ciò che ti chiede!</li></ul>…ma eseguono una richiesta<br />GET Nemo location<br />P. Sherman, 42 Wallaby Way, Sydney<br />
  32. 32. Principi del REST: 3 di 4<br />Comunicazione stateless di rappresentazioni delle risorse<br /><ul><li>Dai al client ciò che ti chiede!</li></li></ul><li>Principi del REST: 3 di 4<br />Comunicazione stateless di rappresentazioni delle risorse<br /><ul><li>Dai al client ciò che ti chiede!</li></li></ul><li>Principi del REST: 4 di 4<br />Ipertesto come motore dello stato dell’applicazione (HATEOAS)<br /><ul><li>Inserisci link alle risorse correlate nella risposta.</li></ul>&lt;giocatore numero=&quot;7java&quot;&gt;<br /> &lt;link href=&quot; http://roma.javaday.it/squadra/blu&quot; rel=“squadra&quot;/&gt;<br /> &lt;link href=&quot; http://roma.javaday.it/giocatore/7java&quot; rel=“self&quot;/&gt;<br /> &lt;caratteristiche&gt;<br /> &lt;caratteristica type=&quot;capelli&quot; value=&quot;blu&quot; /&gt;<br /> &lt;caratteristica type=&quot;baffi&quot; value=&quot;no&quot; /&gt;<br /> &lt;caratteristica type=&quot;altezza&quot; value=&quot;185&quot; /&gt;<br /> &lt;/caratteristiche&gt;<br />&lt;/giocatore&gt;<br />
  33. 33. HTTP è RESTful?<br />Ma HTTP non e’ gia’<br />tutto questo?<br />
  34. 34. HTTP è RESTful<br />Si’!!!<br />HTTP è RESTful<br />
  35. 35. HTTP è RESTful – Principi REST/HTTP<br />
  36. 36. Essere RESTful<br />
  37. 37. JAX-RS (JSR 311)<br />Api Java per lo sviluppo di Web ServicesReSTful<br />Versione attuale 1.1<br />inclusa nella piattaforma JEE6<br />POJO (PlainOld Java Object) + Annotation = Risorsa<br />Server-Side Only (Client previsto Version 2.0)<br />JCP<br />
  38. 38. Risorsa d’esempio<br />@Path(“/blogs/”)<br />Identifica il frammento di URI alla quale la risorsa risponderà<br />http://localhost:8080/resources/blogs/...<br />
  39. 39. Risorsa d’esempio<br />@Context<br />DependencyInjection<br />Principio di Hollywood – Non chiamarmi, ti chiamerò io <br />Configurazione dinamica dell’URI Info<br />
  40. 40. Risorsa d’esempio<br />@GET - @POST<br />Annotazioni sui metodi della classe che risponderanno alle corrispondenti chiamate HTTP<br />
  41. 41. Risorsa d’esempio<br />@Produces({“application/json”, “…”})<br />Indica il tipo di rappresentazione che il server dichiara di essere in grado di produrre per quella risorsa<br />
  42. 42. Risorsa d’esempio<br />@Consumes({“application/xml”, “…”})<br />Indica il tipo di rappresentazione che il server dichiara di essere in grado di interpretare<br />
  43. 43. Risorsa d’esempio<br />@QueryParam<br />@PathParam<br />@FormParam<br />…<br />Utility per l’estrazione dei parametri dall’URL<br />
  44. 44. Cosa avviene in pratica 1 di 2 <br />Request HTTP<br />GET http://roma.javaday.it/resources/blogs<br />
  45. 45. Cosa avviene in pratica 1 di 2 <br />Application<br />Resource 1<br />Resource 2<br />Resource N<br />
  46. 46. Cosa avviene in pratica 1 di 2 <br />
  47. 47. Cosa avviene in pratica 1 di 2 <br />Response<br />200 OK<br />Content-Type: text/xml<br />&lt;xml&gt;…&lt;/xml&gt;<br />
  48. 48. Cosa avviene in pratica 2 di 2<br />1.<br />2.<br />
  49. 49. Cosa avviene in pratica 2 di 2<br />1.<br />
  50. 50. Alcune Implementazioni (ad oggi)<br />
  51. 51. Il nostro Microblog<br />Creiamo un’applicazione web-based che permetta di editare semplici contenuti testuali (tweet) con la possibilità di organizzarli in sezioni…. Un microblog collaborativo<br />
  52. 52. Microblog - Layers<br />Client<br />Server<br />Helper & Converter<br />Glassfish v3<br />
  53. 53. Microblog - ER<br />
  54. 54. Microblog – Class Diagram<br />
  55. 55. Proxy Javascript<br />Server<br />Client<br />MicroblogResource<br />Microblog.js<br />Microblog<br />Http<br />MicroblogConverter<br />
  56. 56. Microblog - Funzionalità<br />
  57. 57. Cosa realizzeremo<br />POST<br />GET<br />DELETE<br />POST<br />DELETE<br />PUT<br />GET<br />
  58. 58. DEMO<br />10 min DEMO<br />
  59. 59. Riferimenti<br />
  60. 60. Per approfondire<br /><ul><li>http://it.wikipedia.org/wiki/Representational_State_Transfer
  61. 61. http://it.wikipedia.org/wiki/HTTP
  62. 62. http://wiki.answers.com/Q/What_is_HTML_stateless_protocol
  63. 63. http://roy.gbiv.com/
  64. 64. https://jersey.dev.java.net/ 
  65. 65. http://java.sun.com/javaee/technologies/persistence.jsp
  66. 66. http://en.wikipedia.org/wiki/JAX-RS
  67. 67. https://glassfish.dev.java.net/
  68. 68. http://en.wikipedia.org/wiki/Create,_read,_update_and_delete
  69. 69. http://www.json.org/
  70. 70. http://it.wikipedia.org/wiki/Object-relational_mapping
  71. 71. http://it.wikipedia.org/wiki/RPC
  72. 72. http://java.sun.com/javaee/technologies/
  73. 73. http://en.wikipedia.org/wiki/Plain_Old_Java_Object
  74. 74. http://sbtourist.blogspot.com/2009/01/jax-rs-and-hateoas.html</li></li></ul><li>Q&A<br />Domande?<br />
  75. 75. Ringraziamenti<br />Grazie a tutti<br />

×