October 2009 - News From JBoss World 09

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

    1 Favorite

    October 2009 - News From JBoss World 09 - Presentation Transcript

    1. News from Andrea Leoncini JBoss Solution Architect October 12, 2009
    2. Agenda  Annunci  REST  Infinispan  HornetQ Andrea Leoncini News from JBoss World
    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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Infinispan Andrea Leoncini News from JBoss World
    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. 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. 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. 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. 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. 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. 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. 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. “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. … 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. 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. 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. 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. 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. 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. 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. 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. 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. News from Grazie! andrea.leoncini@redhat.com

    + JBug RomaJBug Roma, 1 month ago

    custom

    144 views, 1 favs, 0 embeds more stats

    JBug Rome October 2009 Meeting
    Last News From JBos more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 144
      • 144 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 4
    Most viewed embeds

    more

    All embeds

    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