Apache Sling : JCR, OSGi, Scripting and REST

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

    5 Favorites

    Apache Sling : JCR, OSGi, Scripting and REST - Presentation Transcript

    1. OSGi, Scripting & REST Web Development with Apache Sling Carsten Ziegeler | Day Software cziegeler@apache.org
    2. 2 About Carsten Ziegeler • Member of the Apache Software Foundation – Sling, Felix, Cocoon, Portals, Sanselan, Excalibur, Incubator – PMC: Felix, Portals, Cocoon, Incubator, Excalibur (Chair) • RnD Team at Day Software • Article/Book Author, Technical Reviewer, Speaker • JSR 286 Spec Group (Portlet API 2.0) 2
    3. 3 Agenda – Apache Sling 1 Motivation 2 Content and JCR 3 Web and REST 4 Scripting 5 OSGi 6 Outlook 3
    4. 4 1 Motivation 4
    5. 5 Web Challenges • Publish huge amount of information – Different types – Highly dynamic – Different output formats • Web 2.0 ready – Collaboration and integration • Fast changing requirements – Rapid prototyping and development – Dynamic, extensible but maintainable 5
    6. 6 Web Challenges • Publish huge amount of information JCR – Different types – Highly dynamic – Different output formats REST ROA • Web 2.0 ready – Collaboration and integration Scripting • Fast changing requirements – Rapid prototyping and development – Dynamic, extensible but maintainable OSGi 6
    7. 7 Apache Sling – The Fun is Back 5th Winner JAX Innovation Award 2008 • Web framework • Java content repository (JCR) • ROA / REST • Scripting inside • OSGi • Apache Open Source project – http://incubator.apache.org/sling 7
    8. 8 Example: Apache Sling Powered Site
    9. 9 2 Content/JCR 9
    10. 10 Content is Important • Apache Sling makes handling content easy • Java content repository (JCR) – Several different sources possible • Direct mapping: URL -> content – Configurable – http://myserver.domain/products/sling.html • Flexible rendering 10
    11. 11 Content Repository • Generic application data store • Structured and unstructured content • Support small and large-scale data • Locking, transactions, versioning, observation and searching 11
    12. 12 JCR – JSR 170 • Content Repository for Java technology API • (Java) Standard – Supported by many vendors – Used by many products and projects – Several open source solutions • How do you connect to a CR? • How do you interact with a CR? JSR 283 – Version 2.0 – scheduled for 2009 12
    13. 13 Sample Application • Digital Asset Management Poor man's flickr... – Hierarchical storage of pictures – Upload – Tagging – Searching – Automatic thumbnail generation 13
    14. 14 Content Repository Features • Hierarchical content – Nodes and properties • Structured – Nodetypes and typed properties • And/or unstructured • Fine and coarse-grained 14
    15. 15 Sample Content Structure Travel Family Europe Weddings Amsterdam Basel 2008 City Photo Photo 2007 Photo Photo 15
    16. 16 Content Repository Features Query (XPath, SQL) • Export/Import (XML) • Referential Integrity • Authentication • Access Control • Versioning • Observation • Locking and Transactions (JTA) • 16
    17. 17 Comparison • File System – Hierarchical, unstructured • Database – Structured – Referential integrity, transactions • Content Repository – Advantages of a FS and a database – Plus observation, versioning etc. 17
    18. 18 Content Repository )JCR – JSR 170( 18
    19. 19 The Repository Model • Repository: one (or more) workspaces • Workspace contains a tree of items • Item: Node or property • Nodes provide the content structure – May have children • Actual data is stored as values of properties • Types and namespaces! Implementation of JCR 19
    20. 20 Nodes and Properties W o r k s p a c e AC Root = Node o n t e n t R e p o s it o r y = Property a c b g d h e „Once upon -25 a time..“ i j k 6.02x1023 true Implementation of JCR 20
    21. 21 Apache Jackrabbit • JSR 170 reference implementation • Apache TLP since 2006 • Several releases • JCR 2.0 RI later this year • Additional components
    22. 22 Leverage the standard node types • Type hierarchy • Content hierarchy nt:hierarchyNode nt:folder nt:file nt:linkedFile nt:resource 22
    23. 23 Modeling: Content Types my:album > nt:folder my:tag - description (string) - name (string) - date (date) - description (string) my:photo > nt:file - description (string) - location (string) - tags (string[]) my:resource > nt:resource - width, height (long) - format (string) 23
    24. 24 Modeling: Content Hierarchies Travel Family Europe Weddings Amsterdam Basel 2008 City Photo Photo 2007 Photo Photo 24
    25. 25 3 ROA and REST 25
    26. 26 Resource Oriented Architecutre • Piece of information is a resource – News entry, product, photo... – (Descriptive) URI • Stateless – Request contains all relevant information • Use HTTP – Methods (GET, POST) for operations 26
    27. 27 REST with Apache Sling • Default behaviour for GET • Creating/Updating content through POST – Default behaviour • Additional operations/method • Resource-first request processing! 27
    28. 28 Resource • Sling's abstraction of the thing addressed by the request URI – Usually mapped to a JCR node – File system, database... • Properties of resources – Path, e.g. JCR Item path – Type, e.g. JCR node type – Metadata, e.g. last modification date 28
    29. 29 Resource- rst Request Processing fi • URI Decomposition • /products/sling.print.a4.html • Resource Path Selectors Extension – Resource and representation • Content retrieved from repository • Rendering based on content type 29
    30. 30 Basic Request Processing Steps • URI decomposition • Resolve the resource – Source: request URI • Resolve rendering script – Source: resource type – Scripts are wrapped by a generic script servlet • Create rendering chain – Configurable (servlet) filters – Rendering servlet 30 • Invoke rendering chain
    31. 31 Resource Resolver • Gateway for resources • Abstracts the path resolution • Abstracts access to the persistence layer(s) • Configurable – Mappings (Multi-site mgmt, beautify paths) • Tasks: – Finding Resources – Getting Resources – Simplification of Query Execution 31
    32. 32 Resource-First Request Processing request Resource Resolver Resource (resource type) Script Resolver Script response 32
    33. 33 4 Scripting 33
    34. 34 Scripting Inside • It's your choice – JSP, servlet, ESP – javax.script (Apache BSF) – own script handlers • Scripts stored in OSGi bundles or repository • Scripts are searched at configurable locatiosn • Default servlets (or scripts) – JSON, XML – Registerable – Fallback / Last Ressort 34
    35. 35 Script Resolving I • Path to script is built from ... – Configured search paths ( /apps, /libs ) – Resource type converted to path ( my/photo ) – Selector string ( print/a4) – Request method & MIME Type • GET --> Request URL Extension ( html ) • else --> Method Name ( POST, PUT, ... ) 35
    36. 36 Script Resolving Example • URI: /products/sling.print.a4.html • Resource: /products/sling • Resource Type: myapp:product • Script for GET: – /apps/myapp/product/print/a4/html.* • Script for POST: – /libs/myapp/product/print/a4/POST.* 36
    37. 37 Script Resolving II • Scripts are searched by best matching – /apps/myapp/product/print/a4/html.* – /libs/myapp/product/print/a4/html.* – /apps/myapp/product/html.* – /libs/myapp/product/html.* • Resource has a type and a super type – Script inheritance – Default script (JSON...) 37
    38. 38 Powerful Scripting with Includes I Request: /albums/travel.html Resource Resolver Resource, resource type: my:Album Script Resolver Script: /libs/my/Album/html.jsp Script Generates main html sling:include with selectors response 38
    39. 39 Powerful Scripting with Includes II Request: /albums/travel.html Script (/libs/my/Album/html.jsp) <sling:include resource=\"<%= current %>\" addSelectors=\"tree\"/> … Script Resolver Script: /libs/my/Album/tree.html.jsp Script response
    40. 40 5 OSGi 40
    41. 41 Runtime Framework: Requirements • Modularization – Modularity is key – Manage growing complexity – Support dynamic extensibility • Lifecycle Management • Configuration Management • Dependency Management – Modules – Services • Dynamic System Changes 41
    42. 42 OSGi in 5..ehm..1 Minute • Specification of a framework • Module concept (bundles) with lifecycle • Simple but powerful component model – Lifecycle management – Publish/Find/Bind service registration • Dynamic! • Uses the concept of bundles 42
    43. 43 An OSGi Bundle • Leverages the Java packaging mechanism: JAR files • Contains Java classes and resources • Additional meta-data – Implicit dependencies to other bundles – Package imports/exports 43
    44. 44 Services • OSGi offers an API to register services – Service is registered by its interface name(s) – Implementation is bundle private – Several components for same service possible (from different bundles) • Bundles can query services – By interface names – With additional filters 44
    45. 45 The OSGi Core • Minimal but sufficient API for services – Minimal overhead: Good for simple bundles – No support for component management – No support for configuration management – Requires sometimes a lot of Java coding • Additional (optional) OSGi extensions – Declarative Service Specification – Configuration Admin Service Specification 45
    46. Dynamic Services • OSGi Declarative Services Specification – XML Configuration • Contained in bundle – Publishing services – Consuming services • Policy (static,dynamic), cardinality (0..1, 1..1, 0..n) – Default configuration – Service Lifecycle management • Various Implementations – Apache Felix SCR 46
    47. Confi g Admin and Metatype • OSGi Config Admin – Configuration Manager – Persistence storage – API to retrieve/update/remove configs – Works with Declarative Services • OSGi Metatype Service – Description of bundle metadata – Description of service configurations • Various Implementations – Apache Felix 47
    48. Apache Felix • Top-level project (March 2007) • Healthy and diverse community • OSGi R4 (R4.1) implementation – Framework (frequent releases) – Services (continued development) – Moving towards upcoming R4.2 • Tools – Maven Plugins, Web Console, iPojo • New sub project – Karaf : Runtime Environment (Service Mix) 48
    49. Apache Sling Runtime • Uses Apache Felix • Runtime: Apache Sling Launchpad – Might be merged with Felix Karaf • Two flavours – Standalone Java Application – Web application • But Sling can be deployed in any OSGi framework! 49
    50. 50 Standalone Java Application • One single executable JAR file • Small Launcher • Starts OSGi Framework (Apache Felix) • Uses Jetty in an OSGi Bundle 50
    51. 51 Web Application • Extends Standalone Application – Replaces Command Line Support with a Servlet • Uses a Bridge to connect Sling to the Servlet Container 51
    52. 52 Facts about Sling • Sling API – No reference to JCR API – Uses resource abstraction • Highly modular and runtime configurable – OSGi framework – Everything is a OSGi bundle • ConfigAdmin, Declarative Services, Metatype • Felix Web Console 52
    53. 53 Modules Sling API jcr/api sling/core sling/event jcr/resource sling/servlet-resolver sling/scheduler jcr/jackrabbit sling/servlets-* sling/threads scripting/api sling/adapter sling/bundleresource scripting/* sling/i18n commons/* Maven 2 Plugins osgi/* 53
    54. 54 6 Outlook 54
    55. 55 Current State • Apache Sling is in the Apache Incubator • Second Release: RSN! :) • Demo Applications • Increasing interest -> Increasing community • Graduating from the incubator to a TLP – sling.apache.org 55
    56. 56 Development • Easy to get started – Add content, add script, add more content • Very flexible and dynamic • Tooling – Maven Plugins – Apache Felix SCR Plugin – Additional Sling Plugins – But not tied to Maven of course :) 56
    57. 57 And remember... • (Nearly) Everything is content – Application content – HTML pages, CSS and JavaScript files, static images – Documentation, resource bundles, etc. – With versioning, export/import, full text search, etc. 57
    58. 58 Manage the Web Challenges... • Publish huge amount of information – Different types – Highly dynamic – Different output formats • Web 2.0 ready – Collaboration and integration • Fast changing requirements – Rapid prototyping and development – Dynamic, extensible but maintainable 58
    59. 59 ...with Apache Sling: State of the Art • Modularity and dynamics (OSGi) • Content Management (JCR) • Resource oriented architecture (REST) • Scripting inside 59
    60. 60 Apache Sling – The Fun is Back! • Web Framework • Java Content Repository • REST • Scripting inside • OSGi • Apache Open Source project • Check it out today! 60
    61. 61 Thanks for your attention! Q&A

    + Carsten ZiegelerCarsten Ziegeler, 6 months ago

    custom

    1526 views, 5 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1526
      • 1526 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 5
    • Downloads 47
    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