News from




Andrea Leoncini
JBoss Solution Architect


October 12, 2009
Agenda

        Annunci
        REST
        Infinispan
        HornetQ




Andrea Leoncini            News from JBoss...
Tre annunci
                  durante la manifestazione

        L'uscita della versione 5 Enterprise
        La certifi...
Other interesting stuff

        Accelerate your JBoss – Andy Miller
        JBoss and all of its OSGi flavours – Alex J...
What is REST?

      REpresentational State Transfer
        ●   PhD by Roy Fielding
      REST answers the questions of...
What is REST?

      REST is a set of architectural principles
      REST isn’t protocol specific
        ●   But, usual...
What is REST?

        Addressable Resources
           ●   Every “thing” should have a URI
        Constrained interfac...
What is REST?

        Use URIs
           ●   Every endpoint/thing has a URI
        Linkability
           ●   Resourc...
REST Linkability


  <order id=“111”>
    <customer>32133</customer>
    <order-entries>
       <order-entry>
          <q...
Constrained, Uniform Interface


      The idea is to have a well-defined, fixed, finite set of operations
           Re...
REST in Conclusion

      REST answers questions of
        ●   Why does the Web scale?
        ●   Why is the Web so ubi...
JAX-RS

      JCP Specification
        ●   Lead by Sun, Marc Hadley
        ●   Finished in September 2008
      Annota...
JAX-RS Annotations

      @Path
        ●   Defines URI mappings and templates
      @Produces, @Consumes
        ●   Wh...
JAX-RS Parameter Annotations
     @PathParam
          Allows you to extract URI parameters/named URI template
         ...
JAX-RS: GET /orders/3323


     @Path(“/orders”)
     public class OrderService {

          @Path(“/{order-id}”)
        ...
JAX-RS Resource Classes

      JAX-RS annotations are used on POJO classes
      The default component lifecycle is per-...
JAX-RS: GET /orders/3323

  @Path(“/orders”)
                                         Base URI path to resource
  public c...
JAX-RS: GET /orders/3323

  @Path(“/orders”)
  public class OrderService {          Additional URI pattern
               ...
JAX-RS: GET /orders/3323
  @Path(“/orders”)
  public class OrderService {         Defines a URI path segment
             ...
JAX-RS: GET /orders/3323
  @Path(“/orders”)
  public class OrderService {

       @Path(“/{order-id}”)           HTTP meth...
JAX-RS: GET /orders/3323
                                       What’s the CONTENT-TYPE
  @Path(“/orders”)                ...
JAX-RS: GET /orders/3323
  @Path(“/orders”)
  public class OrderService {

       @Path(“/{order-id}”)
       @GET
       ...
JAX-RS: GET /orders/3323
  @Path(“/orders”)
  public class OrderService {

       @Path(“/{order-id : d+}”)
       @GET
  ...
JAX-RS: POST /orders

  @Path(“/orders”)                     What CONTENT-TYPE is this
  public class OrderService {      ...
JAX-RS: POST /orders


  @Path(“/orders”)
  public class OrderService {

       @POST
       @Consumes(“application/xml”)
...
JAX-RS Implementations

      JBoss RESTEasy
           http://jboss.org/resteasy
           Embeddable
           Spr...
References

       Links

           http://jsr311.dev.java.net/
           http://jboss.org/resteasy
           http:...
Infinispan




Andrea Leoncini                News from JBoss World
Cloud Computing

        Clouds are happening
        You cannot escape them! ;)
        Traditional datacenters will b...
Why are clouds popular?

    ●
        Piecemeal cost
         ●
             Pay for what you use
    ●
        Massive, ...
Data Storage

    ●
        Clouds are inherently stateless and ephemeral
    ●
        Databases on clouds don't make sen...
Trying to make databases work in the cloud

    ●
        Native database clustering
         ●
             Notoriously s...
The solution: Data Grids!

    ●
        Data grids are perfect for clouds
         ●
             Highly scalable
       ...
Introducing Infinispan

    ●
        Highly scalable data grid platform
         ●
             100% open source licensed...
Infinispan != JBoss Cache 4
    ●
        Internal data container design completely different
    ●
        APIs completel...
More scalable than JBoss Cache

    ●
        Internal structures more memory efficient
         ●
             Data organ...
“Borrowed” from JBoss Cache

         ●
             JTA transactions
         ●
             Replicated data structure
  ...
… and new features!

         ●
             Consistent hash based data distribution
         ●
             Much simpler ...
Distributed Cache

    ●
        Consistent hash based data distribution
         ●
             Will allow us to scale to...
jboss.org/hornetq


   H


      HornetQ is the new name for JBoss Messaging 2
      HornetQ is an open source community...
How does HornetQ relate to
                  JBoss Messaging?
      We decided to rename JBoss Messaging 2 to HornetQ
   ...
Both standalone and JEE messaging

      HornetQ is a fully functional stand-alone messaging
       server – if you don't...
HornetQ features

      Very high performance journal
      Support for huge queues and huge messages with small
       ...
Ultra high performance journal

      HornetQ persistence is very fast
      Very fast store using Linux asynchronous IO...
Huge queues and messages

      HornetQ supports huge queues – far bigger than
       can fit in available RAM
      Run...
Configurable Transport system

      Fully pluggable transport
      Ships with default implementation using JBoss Netty...
News from




                  Grazie!

andrea.leoncini@redhat.com
Upcoming SlideShare
Loading in...5
×

October 2009 - News From JBoss World 09

1,236

Published on

JBug Rome October 2009 Meeting
Last News From JBoss World 2009
Andrea Leoncini - Red Hat -

Follow us at:
http://tech.groups.yahoo.com/group/roma-jbug

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,236
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
28
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "October 2009 - News From JBoss World 09"

  1. 1. News from Andrea Leoncini JBoss Solution Architect October 12, 2009
  2. 2. Agenda  Annunci  REST  Infinispan  HornetQ Andrea Leoncini News from JBoss World
  3. 3. Tre annunci durante la manifestazione  L'uscita della versione 5 Enterprise  La certificazione JBoss Administrator  Il progetto GateIn Andrea Leoncini News from JBoss World
  4. 4. Other interesting stuff  Accelerate your JBoss – Andy Miller  JBoss and all of its OSGi flavours – Alex Justin  Large Clusters in JBoss – Bela Ban  Extending JOPR – Heiko W. Rupp  Writing Telco Applications with JBCP – Jean Deruelle  JBoss 6 – Jason T. Green  JBPM explained – Tom Baeyens  Beyond Rails with TorqueBox – Bob Mc Whirter  ...and much more http://www.redhat.com/promo/summit/2009/highlights/ Andrea Leoncini News from JBoss World
  5. 5. What is REST?  REpresentational State Transfer ● PhD by Roy Fielding  REST answers the questions of ● Why is the Web so prevalent and ubiquitous? ● What makes the Web scale? ● How can I apply the architecture of the web to my applications? Andrea Leoncini News from JBoss World
  6. 6. What is REST?  REST is a set of architectural principles  REST isn’t protocol specific ● But, usually REST == REST + HTTP  A different way to look at writing Web Services ● Many say it’s the anti-WS-* Andrea Leoncini News from JBoss World
  7. 7. What is REST?  Addressable Resources ● Every “thing” should have a URI  Constrained interface ● Use the standard methods of the protocol ● HTTP: GET, POST, PUT, DELETE, etc.  Representation Oriented  Communicate statelessly ● Stateless application scale Andrea Leoncini News from JBoss World
  8. 8. What is REST?  Use URIs ● Every endpoint/thing has a URI  Linkability ● Resource representations have a standardized way of referencing other resource representations ● Representations have a standardized way to compose themselves: Andrea Leoncini News from JBoss World
  9. 9. REST Linkability <order id=“111”> <customer>32133</customer> <order-entries> <order-entry> <quantity>5</quantity> <product>7811</product> … <order id=“111”> <customer>http://sales.com/customers/32133</customer> <order-entries> <order-entry> <quantity>5</quantity> <product>http://sales.com/products/7811</product> … Andrea Leoncini News from JBoss World
  10. 10. Constrained, Uniform Interface  The idea is to have a well-defined, fixed, finite set of operations  Resources can only use these operations  Each operation has well-defined, explicit behavior  In HTTP land, these methods are GET, POST, PUT, DELETE  How can we build applications with only 4+ methods?  SQL only has 4 operations: INSERT, UPDATE, SELECT, DELETE  JMS has a well-defined, fixed set of operations  Both are pretty powerful and useful APIs with constrained interfaces Andrea Leoncini News from JBoss World
  11. 11. REST in Conclusion  REST answers questions of ● Why does the Web scale? ● Why is the Web so ubiquitous? ● How can I apply the architecture of the Web to my applications?  REST is the Re-birth of HTTP  Promises ● Simplicity ● Interoperability ● Platform independence ● Change resistance Andrea Leoncini News from JBoss World
  12. 12. JAX-RS  JCP Specification ● Lead by Sun, Marc Hadley ● Finished in September 2008  Annotation Framework  Dispatch URI’s to specific classes and methods that can handle requests  Allows you to map HTTP requests to method invocations  IMO, a beautiful example of the power of parameter annotations  Nice URI manipulation functionality Andrea Leoncini News from JBoss World
  13. 13. JAX-RS Annotations  @Path ● Defines URI mappings and templates  @Produces, @Consumes ● What MIME types does the resource produce and consume  @GET, @POST, @DELETE, @PUT, @HEAD ● Identifies which HTTP method the Java method is interested in Andrea Leoncini News from JBoss World
  14. 14. JAX-RS Parameter Annotations  @PathParam  Allows you to extract URI parameters/named URI template segments  @QueryParam  Access to specific parameter URI query string  @HeaderParam  Access to a specific HTTP Header  @CookieParam  Access to a specific cookie value  Above annotations can automatically map HTTP request values to  String and primitive types  Class types with String constructor or a static valueOf(String val) method  List or Arrays of above types when there are multiple values  @Context Andrea Leoncini News from JBoss World
  15. 15. JAX-RS: GET /orders/3323 @Path(“/orders”) public class OrderService { @Path(“/{order-id}”) @GET @Produces(“application/xml”) String getOrder(@PathParam(“order-id”) int id) { … } } Andrea Leoncini News from JBoss World
  16. 16. JAX-RS Resource Classes  JAX-RS annotations are used on POJO classes  The default component lifecycle is per-request ● Same idea as @Stateless EJBs ● Singletons supported too ● EJB integration defined in EE 6 ● Most implementations have Spring integration  Root resources identified via @Path annotation on class Andrea Leoncini News from JBoss World
  17. 17. JAX-RS: GET /orders/3323 @Path(“/orders”) Base URI path to resource public class OrderService { @Path(“/{order-id}”) @GET @Produces(“application/xml”) String getOrder(@PathParam(“order-id”) int id) { … } } Andrea Leoncini News from JBoss World
  18. 18. JAX-RS: GET /orders/3323 @Path(“/orders”) public class OrderService { Additional URI pattern that getOrder() method maps to @Path(“/{order-id}”) @GET @ProduceMime(“application/xml”) String getOrder(@PathParam(“order-id”) int id) { … } } Andrea Leoncini News from JBoss World
  19. 19. JAX-RS: GET /orders/3323 @Path(“/orders”) public class OrderService { Defines a URI path segment pattern @Path(“/{order-id}”) @GET @Produces(“application/xml”) String getOrder(@PathParam(“order-id”) int id) { … } } Andrea Leoncini News from JBoss World
  20. 20. JAX-RS: GET /orders/3323 @Path(“/orders”) public class OrderService { @Path(“/{order-id}”) HTTP method Java getOrder() @GET maps to @Produces(“application/xml”) String getOrder(@PathParam(“order-id”) int id) { … } } Andrea Leoncini News from JBoss World
  21. 21. JAX-RS: GET /orders/3323 What’s the CONTENT-TYPE @Path(“/orders”) returned? public class OrderService { @Path(“/{order-id}”) @GET @Produces(“application/xml”) String getOrder(@PathParam(“order-id”) int id) { … } } Andrea Leoncini News from JBoss World
  22. 22. JAX-RS: GET /orders/3323 @Path(“/orders”) public class OrderService { @Path(“/{order-id}”) @GET @Produces(“application/xml”) String getOrder(@PathParam(“order-id”) int id) { … } } Inject value of URI segment into the id Java parameter Andrea Leoncini News from JBoss World
  23. 23. JAX-RS: GET /orders/3323 @Path(“/orders”) public class OrderService { @Path(“/{order-id : d+}”) @GET @Produces(“application/xml”) String getOrder(@PathParam(“order-id”) int id) { … } } Automatically convert URI string segment into an integer Andrea Leoncini News from JBoss World
  24. 24. JAX-RS: POST /orders @Path(“/orders”) What CONTENT-TYPE is this public class OrderService { method expecting from client? @POST @Consumes(“application/xml”) void submitOrder(String orderXml) { … } } Andrea Leoncini News from JBoss World
  25. 25. JAX-RS: POST /orders @Path(“/orders”) public class OrderService { @POST @Consumes(“application/xml”) void submitOrder(Order orderXml) { … } } Un-annotated parameters assumed to be incoming message body. There can be only one! Andrea Leoncini News from JBoss World
  26. 26. JAX-RS Implementations  JBoss RESTEasy  http://jboss.org/resteasy  Embeddable  Spring and EJB integration  Client Framework  Asynchronous HTTP abstractions  Jersey  Sun reference implementation  WADL support  Apache CXF  RESTLet Andrea Leoncini News from JBoss World
  27. 27. References  Links  http://jsr311.dev.java.net/  http://jboss.org/resteasy  http://rest.blueoxen.net/  http://java.dzone.com/articles/intro-rest  http://architects.dzone.com/articles/putting-java-rest  Books  Coming this fall “RESTFul Java” by me  O’Reilly’s “RESTful Web Services”  http://oreilly.com/catalog/9780596529260/ Andrea Leoncini News from JBoss World
  28. 28. Infinispan Andrea Leoncini News from JBoss World
  29. 29. Cloud Computing  Clouds are happening  You cannot escape them! ;)  Traditional datacenters will be marginalized to niche deployments  Clouds become mainstream Andrea Leoncini News from JBoss World
  30. 30. Why are clouds popular? ● Piecemeal cost ● Pay for what you use ● Massive, global data centers means high availability, instant backups ● Everyone benefits from economies of scale ● Ability to scale on demand ● Very fast provisioning ● Proven charging model ● Remember timesharing on mainframes? Andrea Leoncini News from JBoss World
  31. 31. Data Storage ● Clouds are inherently stateless and ephemeral ● Databases on clouds don't make sense ● Traditional modes of data storage won't work ● Scalability is crucial ● Databases still are a bottleneck ● … and single point of failure! Andrea Leoncini News from JBoss World
  32. 32. Trying to make databases work in the cloud ● Native database clustering ● Notoriously slow and non-scalable ● Unreliable ● Expensive! ● Need special hardware, e.g., SAN Andrea Leoncini News from JBoss World
  33. 33. The solution: Data Grids! ● Data grids are perfect for clouds ● Highly scalable ● No single point of failure ● Works with ephemeral nodes ● Very low latency ● Data grids ● Amazon SimpleDB uses Dynamo ● Infinispan, etc. ● Many other commercial and open source offerings Andrea Leoncini News from JBoss World
  34. 34. Introducing Infinispan ● Highly scalable data grid platform ● 100% open source licensed (LGPL) ● Based on some JBoss Cache code ● But mostly all-new! ● JBoss Cache is a clustered caching library ● Infinispan is a data grid platform ● JBoss Cache uses a tree-structured API ● Infinispan is a Map. Like JSR-107’s JCACHE Andrea Leoncini News from JBoss World
  35. 35. Infinispan != JBoss Cache 4 ● Internal data container design completely different ● APIs completely different ● Not backward-compatible ● Although an code-level compatibility layer is available Andrea Leoncini News from JBoss World
  36. 36. More scalable than JBoss Cache ● Internal structures more memory efficient ● Data organised in Map-like structures ● Making use of CAS ● minimising synchronized blocks, mutexes ● Containers are naturally ordered ● Makes eviction much more efficient ● Uses JBoss Marshalling ● Smaller payloads + poolable streams = faster remote calls Andrea Leoncini News from JBoss World
  37. 37. “Borrowed” from JBoss Cache ● JTA transactions ● Replicated data structure ● Eviction, cache persistence ● Notifications and eventing API ● JMX reporting ● Fine-grained replication ● MVCC locking ● Non-blocking state transfer techniques ● Query API ● Custom (non-JDK) marshalling Andrea Leoncini News from JBoss World
  38. 38. … and new features! ● Consistent hash based data distribution ● Much simpler Map API (JSR-107 compliant) ● JPA API ● Client/server module with memcached compatibility ● REST API ● Ability to be consumed by non-JVM platforms ● JOPR based GUI management console ● Distributed executors ● Map/reduce programming model made easy! Andrea Leoncini News from JBoss World
  39. 39. Distributed Cache ● Consistent hash based data distribution ● Will allow us to scale to bigger clusters ● Goal of efficient scaling to 1000’s of nodes ● Lightweight, “L1” cache for efficient reads ● On writes, “L1” gets invalidated ● Dynamic rebalancing Andrea Leoncini News from JBoss World
  40. 40. jboss.org/hornetq H  HornetQ is the new name for JBoss Messaging 2  HornetQ is an open source community project to build a multi-protocol asynchronous messaging system  HornetQ is designed for performance  HornetQ is designed with usability in mind  HornetQ is full featured  See the wiki for more information: http://www.jboss.org/community/wiki/HornetQGeneralFAQs Andrea Leoncini News from JBoss World
  41. 41. How does HornetQ relate to JBoss Messaging?  We decided to rename JBoss Messaging 2 to HornetQ  JBM 1.x and 2.x code bases 95%+ different.  HornetQ is a different beast to JBM 1.x  HornetQ is not tightly coupled to JBoss Application Server Andrea Leoncini News from JBoss World
  42. 42. Both standalone and JEE messaging  HornetQ is a fully functional stand-alone messaging server – if you don't want an app server, don't use an app server  HornetQ can also be integrated with any JEE application server, e.g. JBoss Application Server 5.0, using its JCA adaptor  HornetQ can also be used with any dependency injection framework, e.g. JBoss MC, Spring, Google Guice Andrea Leoncini News from JBoss World
  43. 43. HornetQ features  Very high performance journal  Support for huge queues and huge messages with small server and client footprint  Pluggable transport system  Seamless High Availability (HA)  Massively flexible clustering  Extensive management API  Lots, lots, more, but no time here! See the wiki for a full list: http://www.jboss.org/community/wiki/HornetQFeatures Andrea Leoncini News from JBoss World
  44. 44. Ultra high performance journal  HornetQ persistence is very fast  Very fast store using Linux asynchronous IO.  Up to 100+ MiB/s on a single node!  JNI interface to aio library (libaio), encapsulated in Java package.  Automatic switches to Java NIO when not running on Linux Andrea Leoncini News from JBoss World
  45. 45. Huge queues and messages  HornetQ supports huge queues – far bigger than can fit in available RAM  Run Terabyte queues while the server is only running in 50MiB of RAM!  Send and receive huge multi-gigabyte messages with all the normal transactional semantics  Effectively, only limit to message size is available disk space. We have tested messages up to 8 GiB in size. Andrea Leoncini News from JBoss World
  46. 46. Configurable Transport system  Fully pluggable transport  Ships with default implementation using JBoss Netty http://jboss.org/netty/  TCP transport  SSL transport  HTTP transport  Servlet transport  In-VM transport Andrea Leoncini News from JBoss World
  47. 47. News from Grazie! andrea.leoncini@redhat.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×