Introduction to JAX-RS

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Introduction to JAX-RS - Presentation Transcript

    1. ______/\\\\\\_____/\\\\\_____/\\_______/\\________________/\\\\\_________/\\\\\\___ _____/////\///____/\\\\\\\__///\\___/\/_______________/\///////\\_____/\/////////\\_ _________/\\______/\/////////\\___///\\\/________________/\\_____/\\____//\\______///__ _________/\\_____/\\_______/\\_____//\\_______/\\\\__/\\\\\/______////\\_________ _________/\\_____/\\\\\\\\______/\\______////////___/\//////\\_________////\\______ _________/\\_____/\/////////\\______/\\\_________________/\\____//\\___________////\\___ __/\\___/\\_____/\\_______/\\____/\////\\_______________/\\_____//\\___/\\______//\\__ _//\\\\\______/\\_______/\\__/\/___///\\_____________/\\______//\\_///\\\\\/___ __/////////_______///________///__///_______///______________///________///____///////////_____ ____/\\\\\______/\\\\\\\\_____/\\\\\\_____/\\\\\\\\_ __/\///////\\___/\///////////____/\/////////\\__///////\/////__ _/\\_____/\\___/\\______________//\\______///_________/\\_______ _/\\\\\/____/\\\\\\_______////\\________________/\\_______ _/\//////\\____/\///////___________////\\_____________/\\_______ _/\\____//\\___/\\_____________________////\\__________/\\_______ _/\\_____//\\__/\\______________/\\______//\\_________/\\_______ _/\\______//\\_/\\\\\\\\_///\\\\\/__________/\\_______ _///________///__///////////////____///////////____________///________ with 2009-09-15 Andreas Bjärlestam
        • Andreas Bjärlestam
        • mailto:andreas@bjarlestam.com
        • http://andreas.bjarlestam.com
        • http://twitter.com/bjarlestam
    2. REST? Attribution: http://www.flickr.com/photos/noahbulgaria/270090287
    3. Pragmatic explanation
      • Use HTTP the way it was designed to be used
      • Take advantage of the good things in HTTP
      • By following a set of constraints
    4. Constraints in REST
      • Give everything its own URI
      • Communicate with a standard set of methods
      • Communicate with Media Types
      • Link your resources together
      • Avoid session state
      • Support caching
      * This is a very simplified version of the real REST constraints, for the real stuff read Roy Fieldings dissertation
    5. JAX-RS (JSR 311)
      • Java API for building RESTful services
    6. JAX-RS
      • Based on POJOs with Annotations
    7. JAX-RS
      • Makes the developer focus on URLs, HTTP methods and Media Types.
    8. Lets code…
    9. @Path
      • @Path( "location" )
      • public class LocationResouce {
      • }
    10. @GET, @PUT, @POST
      • @Path( "location" )
      • public class LocationResouce {
      • @GET
      • @Produces( "application/xml" )
      • public String getLocation() {
      • return &quot;<location>I’m in Sweden</location>&quot; ;
      • }
      • }
    11. curl
    12. @PathParam, @QueryParam
      • @Path( &quot;location&quot; )
      • public class LocationResouce {
      • @GET
      • @Path( &quot;{user}&quot; )
      • @Produces( &quot;application/xml&quot; )
      • public String getLocation(@PathParam( &quot;user&quot; ) String user) {
      • return &quot;<location>” + user + &quot; is in Sweden</location>&quot; ;
      • }
      • }
    13. JAXB
      • @Path( &quot;location&quot; )
      • public class LocationResouce {
      • @GET
      • @Path( &quot;{user}&quot; )
      • @Produces( &quot;application/xml&quot; )
      • public Location getLocation(@PathParam( &quot;user&quot; ) String user) {
      • return new Location( &quot;59.3&quot; , &quot;18&quot; );
      • }
      • }
    14. JAXB
      • @XmlRootElement
      • public class Location {
      • public String lattitude;
      • public String longitude;
      • public Date timestamp;
      • . . .
      • }
    15.  
    16. @Produces and Media Types
      • @Path( &quot;location&quot; )
      • public class LocationResouce {
      • @GET
      • @Path( &quot;{user}&quot; )
      • @Produces({ &quot;application/xml&quot;, &quot;application/json&quot; })
      • public Location getLocation(@PathParam( &quot;user&quot; ) String user) {
      • return new Location( &quot;59.3&quot; , &quot;18&quot; );
      • }
      • }
    17.  
    18. @Context, UriInfo and UriBuilder
      • @Path( &quot;location&quot; )
      • public class LocationResouce {
      • @Context UriInfo uriInfo;
      • . . .
      • @POST
      • @Consumes( &quot;application/x-www-form-urlencoded&quot; )
      • public Response saveLocation(@FormParam( &quot;user&quot; ) String user) {
      • locations.put (user, new Location( &quot;59.3&quot; , &quot;18&quot; ));
      • UriBuilder uriBuilder = uriInfo .getAbsolutePathBuilder();
      • URI userUri = uriBuilder.path(user).build();
      • return Response.created(userUri).build();
      • }
      • }
    19.  
    20. Cache Control
      • @GET
      • @Path( &quot;{user}&quot; )
      • @Produces({ &quot;application/xml&quot;, &quot;application/json&quot; })
      • public Response getLocation(@PathParam( &quot;user&quot; ) String user) {
      • Location l = locations .get(user);
      • CacheControl cc = new CacheControl();
      • cc.setMaxAge(500);
      • Response.ResponseBuilder builder = Response.ok(l);
      • builder.cacheControl(cc);
      • return builder.build() ;
      • }
    21.  
    22. For the interested
    23. For the interested
      • Roy Fieldings PhD dissertation, see ch 5
        • http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
      • Roy Fieldings blog
        • http://roy.gbiv.com/untangled/
      • Mark Hadleys blog
        • http://weblogs.java.net/blog/mhadley/
      • Mark Nottinghams blog
        • http://www.mnot.net
      • Stefan Tilkovs blog
        • http://www.innoq.com/blog/st/
    24. Extra slides
    25. JAX-RS
      • JSR 311
      • Version 1.0 was finalized in september 2008
      • Version 1.1 is planned to be part of JEE6
    26. JAX-RS
      • Several implementations available
      • Sun Jersey
      • JBoss RestEasy
      • Restlets
      • Apache CXF
      • Triaxrs
      • Apache WINK
    27. Serendipity
      • By giving everything a URL, sticking to a Uniform Interface and linking your resources you make the chances of reuse in unexpected ways higher
    28. Statelessness
      • Better scaling
        • No session storage on server
        • Any server in a cluster can handle any request
        • The resources can safely be cached
      • More reliable
        • A client can safely re-send a request
      • Better resource reuse
        • The resources can safely be linked to
    29. Caching
    30. Client Proxy Cache Client Client Server Proxy Cache Client Reverse Proxy Cache Client Cache Client Cache Client Cache Client Cache
    31. “ The best requests are those that not even reach me.” - Anonymous overloaded Server
    32. 50 requests/second = 3000 requests/minute setting max-age=60 (seconds) can then save you 2999 requests
    33. Caching
      • GET can be cached while POST can't (safely)
      • Specify max-age
        • Use max-age cache control header
      • Split data according to freshness requirement
      • Support conditional GET
        • Get if modified since
        • E-tags
    SlideShare Zeitgeist 2009

    + Andreas BjärlestamAndreas Bjärlestam Nominate

    custom

    407 views, 0 favs, 1 embeds more stats

    An introduction to RESTful web services in Java usi more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 407
      • 353 on SlideShare
      • 54 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 11
    Most viewed embeds
    • 54 views on http://bjarlestam.wordpress.com

    more

    All embeds
    • 54 views on http://bjarlestam.wordpress.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories