SlideShare a Scribd company logo
1 of 57
Rapid JCR applications development
                with Apache Sling
      Bertrand Delacrétaz
      Senior R&D Developer, Day Software, www.day.com
      Member and Director, ASF
      bdelacretaz@apache.org
      blog at http:/
                   /grep.codeconsult.ch
      twitter: @bdelacretaz


      Slides revision: 2009-03- 20
      Slides theme design: David Nuescheler



Wednesday, March 25, 2009
Rapid JCR applications development
                with Apache Sling
      Bertrand Delacrétaz
      Senior R&D Developer, Day Software, www.day.com
      Member and Director, ASF
      bdelacretaz@apache.org
      blog at http:/
                   /grep.codeconsult.ch
      twitter: @bdelacretaz


      Slides revision: 2009-03- 20
      Slides theme design: David Nuescheler

                              is thi
                            busy s slide
                                  enou
                                      gh?
Wednesday, March 25, 2009
Intro to JCR
                        JCR = Java Content Repository API
                        JSR-170 / JSR283
                                     -
                        Everything Is Content - and JCR manages it as
                        trees of Nodes and Properties, using rich data
                        types.




Wednesday, March 25, 2009
Intro to JCR
                        JCR = Java Content Repository API
                        JSR-170 / JSR283
                                     -
                                                     silve
                                                           r


                        Everything Is Content - and JCR manages it as
                        trees of Nodes and Properties, using rich data
                        types.




Wednesday, March 25, 2009
What’s JCR?
                            JSR-170

                  Content Repository for
                  JavaTM technology API
                  Spec-Lead:
                  Day Software
                  Status:
                  Final Release 17-jun-2005


                  Expert Group:




Wednesday, March 25, 2009
What’s JCR?
                            JSR-170   JSR-283

                  Content Repository for
                  JavaTM technology API v2.0
                  Spec-Lead:
                  Day Software
                  Status:
                  Public Review Closed sep-2007


                  Expert Group:




Wednesday, March 25, 2009
Wednesday, March 25, 2009
What’s JCR?




Wednesday, March 25, 2009
What’s JCR?
                        “The API should be a standard,
                        implementation independent, way to
                        access content bi-directionally on a
                        granular level to a
                        content repository.”

Wednesday, March 25, 2009
What’s JCR?
                        “The API should be a standard,
                        implementation independent, way to
                        access content bi-directionally on a
                        granular level to a
                        content repository.” ?

Wednesday, March 25, 2009
What’s JCR?
                        “The API should be a standard,
                        implementation independent, way to
                        access content bi-directionally on a
                        granular level to a
                        content repository.” ?

Wednesday, March 25, 2009
Best of both worlds.
                                                 data base                   file s ys t e m
                                                                                      hier-
                                                                                    archi
                                     integ
                                          rity                 re                        es
                                                        structu
                                                                      read                    streams


                                     tx                             write                       access
                                                      query                         locking    control



                            multi-
                            value
                                                                                                    ning
                                                                                  obser-      versio
                                      un-structured
                                                      “full-text”   sort          vation
                                                                    order

                                                              content repo sit or y
Wednesday, March 25, 2009
Best of both worlds.
                                                 data base                   file s ys t e m
                                                                                      hier-
                                                                                    archi
                                     integ
                                          rity                 re                        es
                                                        structu
                                                                      read                    streams


                                     tx                             write                       access
                                                      query                         locking    control



                            multi-
                            value
                                                                                                    ning
                                                                                  obser-      versio
                                      un-structured
                                                      “full-text”   sort          vation
                                                                    order

                                                              content repo sit or y
Wednesday, March 25, 2009
Known compliant Repositories




Wednesday, March 25, 2009
Known compliant Repositories
                                                                       * using third party connector

                                                                              *                  *

           Apache                                    Exo          Microsoft          OpenText
         Jackrabbit             Oracle XML DB    ECMS Platform   Sharepoint           Livelink

                                                                                                 *

                                                    Xythos
           Day CRX              IBM FileNet P8    Repository     Alfresco ECM       Vignette V7

                            *                              *
                                                                                             any ors
                                                                                        ow mvendd?
                                                                                       H S e
                                                                 +hun
                                                                      dre              DBMou ne
                                                                                      R do y
         Interwoven                                  EMC            TCKsds of
                                                                 regis
         Repository                IBM CM        Documentum           tered
Wednesday, March 25, 2009
Some known JCR Applications




Wednesday, March 25, 2009
Some known JCR Applications

                                                                                 Fast
                                                                            Enterprise
           BEA Portal     Sun                        Oracle Portal Interface 21Search
                      OpenPortal     JBoss Portal      Day            Spring
                                                 Communique        Framework
                                                      DAM                      Day
           magnolia WCMS        Apache Sling                              Communique
                      Alfresco ECMS             Mindquarry            ApacheCollab
                                              Collaboration          Tapestry
                           QSLabs              Day
           Apache       Compliance       Communiqué                           IBM FileNet
           Cocoon                             WCMS
                                      Artifactory         medic-2-medic WebSiteManage
                                                                                    r
                 Apache James        Maven Proxy         mapofmedicine
                                 Exo
                GX          ECMS Platform            TYPO3
           WebManager                              v5.0 WCM
                                       InfoQ                                      Liferay
                                      Online              Hippo                 Enterprise
                    Nuxeo ECM      Community               CMS                    Portal
                                                  Jahia               Sakai
             Percussion                       Framework            E-learning
              Rhythmix           QuickWCM                                  Sourcemix
                                  WCMS                  Lutece             Sourcemix
                                                        Portal
Wednesday, March 25, 2009
Some known JCR Applications

                                                                                 Fast
                                                                            Enterprise
           BEA Portal     Sun                        Oracle Portal Interface 21Search
                      OpenPortal     JBoss Portal      Day            Spring
                                                 Communique        Framework
                                                      DAM                      Day
           magnolia WCMS        Apache Sling                              Communique
                      Alfresco ECMS             Mindquarry            ApacheCollab
                                              Collaboration          Tapestry
                           QSLabs              Day
           Apache       Compliance       Communiqué                           IBM FileNet
           Cocoon                             WCMS
                                      Artifactory         medic-2-medic WebSiteManage
                                                                                    r
                 Apache James        Maven Proxy         mapofmedicine
                                 Exo
                GX          ECMS Platform            TYPO3
           WebManager                              v5.0 WCM
                                       InfoQ                                      Liferay
                                      Online              Hippo                 Enterprise
                    Nuxeo ECM      Community               CMS                    Portal
                                                  Jahia               Sakai
             Percussion                       Framework            E-learning
              Rhythmix           QuickWCM                                  Sourcemix
                                  WCMS                  Lutece             Sourcemix
                                                        Portal
Wednesday, March 25, 2009
JCR code excerpt
          Repository repository = new TransientRepository();
          Session session = repository.login(...);
          / Create content
          /
          Node root = session.getRootNode();
          Node hello = root.addNode(quot;helloquot;);
          Node world = hello.addNode(quot;worldquot;);
          world.setProperty(quot;messagequot;, quot;Hello, World!quot;);
          session.save();
          / Retrieve content
           /
          Node node = root.getNode(quot;hello/worldquot;);
          print(node.getPath());
          print(node.getProperty(quot;messagequot;).getString());
Wednesday, March 25, 2009
On to Sling

Wednesday, March 25, 2009
Sling builds on top of JCR
                        Scriptable applications layer on top of JCR
                        OSGi-based industrial-strength framework
                        Simple, powerful, JCR inside
                        Runs on Apache Jackrabbit by default


                              http:/
                                   /incubator.apache.org/sling

Wednesday, March 25, 2009
Sling builds on top of JCR
                        Scriptable applications layer on top of JCR
                        OSGi-based industrial-strength framework
                        Simple, powerful, JCR inside
                        Runs on Apache Jackrabbit by default


                              http:/
                                   /incubator.apache.org/sling
                                          join t
                                                 he
                                           fun!
Wednesday, March 25, 2009
Sling == REST over JCR




Wednesday, March 25, 2009
Sling == REST over JCR


                                 REST -> Roy T. Fielding


                                                                          scheler
                                                           JCR: David Nue
                                                                                                  2005
         rele a                                                                     1.0 r
                                                                                    v    ele ased
               sed y
         162 p 2k                                                                       +300 pages
                ages



Wednesday, March 25, 2009
Reclaiming the web.
                            Sling URL decomposition.
                            /cars/audi/s4.details.html




Wednesday, March 25, 2009
Reclaiming the web.
                            Sling URL decomposition.
                            /cars/audi/s4.details.html

  Repository




Wednesday, March 25, 2009
Reclaiming the web.
                            Sling URL decomposition.
                            /cars/audi/s4.details.html

                Content
  Repository epository Path
           R




Wednesday, March 25, 2009
Reclaiming the web.
                            Sling URL decomposition.
                            /cars/audi/s4.details.html

                Content
  Repository epository Path
           R




Wednesday, March 25, 2009
Reclaiming the web.
                            Sling URL decomposition.
                            /cars/audi/s4.details.html

                Content                      ...selects a
  Repository epository Path
           R                              particular scrip
                                                          t




Wednesday, March 25, 2009
Sling architecture
                       HTTP                                   debugger      filesystem    browser



                     standard        custom servlets                        WebDAV      Sling OSGi
                     servlets        and components                          server       console
                                                               javascript

               resource         servlet/script   OSGi bundles
                                                 JSR 223
                                                           JSP
                                                                 Ruby
              resolution         resolution      scripting                     OSGi framework
                                                                Velocity
                                                                 etc..
                                                                                (Apache Felix)
                 OSGi webapp
                                                       JSR-170 API


                                                          JCR
                                                       repository




Wednesday, March 25, 2009
Sling architecture
                       HTTP      sling.js                         debugger      filesystem      browser
                                  utilit y
        POST,                                                                             V
       json GE
              T                                                                     WebDA
                                                                                     access
                     standard         custom servlets                           WebDAV        Sling OSGi
                     servlets         and components                             server         console
                                                                   javascript

               resource         servlet/script        OSGi bundles
                                                      JSR 223
                                                                JSP
                                                                    Ruby
              resolution         resolution           scripting                    OSGi framework
                                                                   Velocity
                                                                    etc..
                                                                                    (Apache Felix)
                 OSGi webapp              ESP
                                                 de
                                      se r ver-si t
                                                ip       JSR-170 API
                                       javascr


                                                            JCR
                                                         repository




Wednesday, March 25, 2009
A minimalone .esp script blog
                     Consisting of
                                   Sling
                            cat /Volumes/localhost/apps/blog/blog.esp | wc -l
                                                  54




Wednesday, March 25, 2009
from
                                                                              e code :
                                                                       ge t th ay.com
                                                                           dev.d url.com/
                                                                              /tiny 6
                                                                       ht tp:/ gblog4
                                                                             slin



                  A minimalone .esp script blog
                     Consisting of
                                   Sling
                            cat /Volumes/localhost/apps/blog/blog.esp | wc -l
                                                  54




Wednesday, March 25, 2009
Sling POST servlet
                 # POST to Sling
                 curl -F title=hello http://localhost:8888/foo
                 -> 200 OK

                 # GET created node in json format
                 curl http:/ /localhost:8888/foo.tidy.json
                 {
                   quot;jcr:primaryTypequot;: quot;nt:unstructuredquot;,
                   quot;titlequot;: quot;helloquot;
                 }




Wednesday, March 25, 2009
Sling POST servlet
                 # POST to Sling
                 curl -F title=hello http://localhost:8888/foo
                 -> 200 OK
                                                                 POST se t
                                                                    e ters s
                 # GET created node in json format           param opertie
                 curl http:/ /localhost:8888/foo.tidy.json    node pr
                 {
                   quot;jcr:primaryTypequot;: quot;nt:unstructuredquot;,
                   quot;titlequot;: quot;helloquot;
                 }




Wednesday, March 25, 2009
blog step 1: create content
             !        <form method=quot;POSTquot;>
             !          Title:
             !          <input type=quot;textquot; name=quot;titlequot; style=quot;width:100%quot;/>
             !
             !              Text:
             !              <textarea style=quot;width:100%quot; name=quot;textquot;></textarea>
             !
             !              <input type=quot;submitquot; value=quot;savequot;/>
             !
             !          <input type=quot;hiddenquot; name=quot;:redirectquot; value=quot;*quot;/>
             !        </form>




Wednesday, March 25, 2009
blog step 1: create content
             !        <form method=quot;POSTquot;>
             !          Title:
             !          <input type=quot;textquot; name=quot;titlequot; style=quot;width:100%quot;/>
             !
             !              Text:
             !              <textarea style=quot;width:100%quot; name=quot;textquot;></textarea>
             !
             !              <input type=quot;submitquot; value=quot;savequot;/>
             !
             !          <input type=quot;hiddenquot; name=quot;:redirectquot; value=quot;*quot;/>
             !        </form>
                                                                    dri ve
                                                              fields t
                                                         Form onten
                                                            the c el
                                                                mod
Wednesday, March 25, 2009
blog step 2: retrieve content
          <script src=quot;/system/sling.jsquot;></script>!
          <form method=quot;POSTquot;>
          ...
          </form>

          <!-- initialize form fields from current node values -->
          <script>Sling.wizard();</script>




Wednesday, March 25, 2009
blog step 2: retrieve content
          <script src=quot;/system/sling.jsquot;></script>!
          <form method=quot;POSTquot;>
          ...
          </form>

          <!-- initialize form fields from current node values -->
          <script>Sling.wizard();</script>




                                                          U(D)
                                               Inst ant CR


Wednesday, March 25, 2009
blog step 3: navigation
                   <ul>
                       <li>
                          <a href=quot;/content/blog/*quot;>
                          [Create new post]</a>
                       </li>
          !          <script>
          !             var posts = Sling.getContent(quot;/content/blogquot;, 2);
          !             for(var post in posts) {
          !             ! document.write(
                            quot;<li><a href=’” + post + quot;'>quot;
                            + posts[post].title + quot;</a></li>quot;);
          !             }
          !          </script>
                   </ul>
Wednesday, March 25, 2009
we got a blog!
                  html form + Sling.wizard() + Sling.getContent()




Wednesday, March 25, 2009
The ESP blog sample
                              ESP scripting + java + javascript
                       OSGi bundle, initial content, WebDAV, observation, RAD




Wednesday, March 25, 2009
The ESP blog sample
                              ESP scripting + java + javascript
                       OSGi bundle, initial content, WebDAV, observation, RAD




                                                                                     mples
                                                                                ng/sa /
                                                                         der sli rl.com
                                                                   de un inyu
                                                                Co
                                                                    ht tp:/ t logesp
                                                                          /
                                                                         slingb
Wednesday, March 25, 2009
ESP blog in action
                                 create



                                 retrieve
                                             thumbnails


                                 update

Wednesday, March 25, 2009
ESPblog demo

Wednesday, March 25, 2009
ESP blog source files
        admin.esp                pom.xml
        edit.esp                 ThumbnailGeneratorService.java
        html.esp                 ThumbnailGeneratorServiceImpl.java
        list.esp
                                 espblog.css
        menu.esp
                                 sling-logo.png
        xml.esp (RSS feed)
        constants.esp
        header.esp


Wednesday, March 25, 2009
ESP blog source files
        admin.esp                pom.xml
        edit.esp                 ThumbnailGeneratorService.java
        html.esp                 ThumbnailGeneratorServiceImpl.java
        list.esp
                                 espblog.css
        menu.esp
                                 sling-logo.png
        xml.esp (RSS feed)
        constants.esp                                source
                                               log re s to
                                          espb oint
        header.esp                          t ype p ripts
                                              those sc

Wednesday, March 25, 2009
ESP blog content structure
                                            JSON dump




                              WebDAV view
Wednesday, March 25, 2009
<%                ESP blog edit script
          pageTitle = currentNode.title; load(quot;header.espquot;);
          %>
          <body>
              <form method=quot;POSTquot; action=quot;<%= currentNode %>quot;>
                <p><label>Title</label>
                <input name=quot;titlequot; type=quot;textquot;
                    value=quot;<%= currentNode.title %>quot;></p>
                ...
                <input type=quot;hiddenquot; name=quot;createdquot;/>
                <input name=quot;:redirectquot; type=quot;hiddenquot;
                    value=quot;/content/espblog/posts.admin.htmlquot;/>
                <input type=quot;submitquot; value=quot;Postquot; class=quot;buttonquot;>
              </form>
          ...

Wednesday, March 25, 2009
ESP blog thumbnails: OSGi service
          /**
           * Observe the espblog content for changes, and generate
           * thumbnails when images are added.
           *
           * maven-scr-plugin uses annotations to generate the OSGi
           * Declarative Services XML configuration files
           * @scr.service
           * @scr.component immediate=quot;truequot;
           *
           */
          public class ThumbnailGeneratorServiceImpl
            implements ThumbnailGeneratorService, EventListener {




Wednesday, March 25, 2009
ESP blog thumbnails: observation
       /** @scr.reference (framework injects it automatically) */
       private SlingRepository repository;

       /** called by framework when service is activated */
       protected void activate(ComponentContext context) {
         Session s = repository.loginAdministrative(null);
         / Listen for nt:file NODE_ADDED repository events
          /
         ObservationManager m =
           s.getWorkspace().getObservationManager();
       ! String[] types = { quot;nt:filequot; };
       ! m.addEventListener(
             this,
             Event.NODE_ADDED,
             contentPath, ...);

Wednesday, March 25, 2009
ESP blog thumbnails: NODE_ADDED
       /** Called by JCR Observation manager for events that this
           * EventListener registered for
           */
       public void onEvent(EventIterator it) {
           while (it.hasNext()) {
            Event event = it.nextEvent();
              if (event.getType() == Event.NODE_ADDED
                && !(event.getPath().contains(quot;thumbnailsquot;)))
                {
                  String p = event.getPath();
                  Node n = session.getRootNode().getNode(p);
                  createThumbnails(addedNode);
                }
              }
       ...
Wednesday, March 25, 2009
We got a typical Sling application!
          JCR features: WebDAV,
          observation, nt:unstructured.

          Sling goodies: simple script
          mappings (BYOL), POST servlet, RESTful
          interface.

          OSGi bundle, code + initial
          content, Maven plugins.

Wednesday, March 25, 2009
We got a typical Sling application!
          JCR features: WebDAV,
          observation, nt:unstructured.

          Sling goodies: simple script
          mappings (BYOL), POST servlet, RESTful
          interface.
                                                           ource
                                                     blog s under
                                                 ESP
                                                       found es
                                                ode is ampl
          OSGi bundle, code + initial          c
                                                   sling/s
          content, Maven plugins.

Wednesday, March 25, 2009
Where is Sling going?




Wednesday, March 25, 2009
Where is Sling going? (aka conclusion)
              First web framework designed for JCR.
              Embrace the web, act like a very clever
              web server!
              Intelligent HTTP/JSON storage?
              OSGi, organic app growth.

              Growing community, graduate
              in 2009?
                            http://incubator.apache.org/sling
                            http://dev.day.com
                            http://contentcentric.org/

Wednesday, March 25, 2009
Where is Sling going? (aka conclusion)
              First web framework designed for JCR.
              Embrace the web, act like a very clever
              web server!
              Intelligent HTTP/JSON storage?
                                                          not a web
              OSGi, organic app growth.         “Sling is       s         ation a
                                                                    applic k, it’s
                                                                  fram e wor
              Growing community, graduate                                  ame work”
              in 2009?                                            w  eb f r
                                     http://incubator.apache.org/sling
                                     http://dev.day.com
                            join t
                                   hehttp://contentcentric.org/
                             fun!
Wednesday, March 25, 2009

More Related Content

What's hot

Spring boot
Spring bootSpring boot
Spring bootsdeeg
 
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) Hackable
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) HackableCollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) Hackable
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) HackableDarren Duke
 
Oracle forms and reports 11g installation on linux
Oracle forms and reports 11g installation on linuxOracle forms and reports 11g installation on linux
Oracle forms and reports 11g installation on linuxVenu Palakolanu
 
WebLogic Server Work Managers and Overload Protection
WebLogic Server Work Managers and Overload ProtectionWebLogic Server Work Managers and Overload Protection
WebLogic Server Work Managers and Overload ProtectionJames Bayer
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8sHyoungjun Kim
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요Jo Hoon
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Justin Lin
 
Route 路由控制
Route 路由控制Route 路由控制
Route 路由控制Shengyou Fan
 
Getting started with Spring Security
Getting started with Spring SecurityGetting started with Spring Security
Getting started with Spring SecurityKnoldus Inc.
 
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1Toshiaki Maki
 
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)I Goo Lee
 
Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01Eric Bourdet
 
Bypass file upload restrictions
Bypass file upload restrictionsBypass file upload restrictions
Bypass file upload restrictionsMukesh k.r
 

What's hot (20)

Spring boot
Spring bootSpring boot
Spring boot
 
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) Hackable
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) HackableCollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) Hackable
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) Hackable
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Oracle forms and reports 11g installation on linux
Oracle forms and reports 11g installation on linuxOracle forms and reports 11g installation on linux
Oracle forms and reports 11g installation on linux
 
WebLogic Server Work Managers and Overload Protection
WebLogic Server Work Managers and Overload ProtectionWebLogic Server Work Managers and Overload Protection
WebLogic Server Work Managers and Overload Protection
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Phpcon2015
Phpcon2015Phpcon2015
Phpcon2015
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8s
 
Spring ioc
Spring iocSpring ioc
Spring ioc
 
Jenkins
JenkinsJenkins
Jenkins
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
 
Spring security
Spring securitySpring security
Spring security
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
 
Route 路由控制
Route 路由控制Route 路由控制
Route 路由控制
 
Jboss Tutorial Basics
Jboss Tutorial BasicsJboss Tutorial Basics
Jboss Tutorial Basics
 
Getting started with Spring Security
Getting started with Spring SecurityGetting started with Spring Security
Getting started with Spring Security
 
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
 
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
 
Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01
 
Bypass file upload restrictions
Bypass file upload restrictionsBypass file upload restrictions
Bypass file upload restrictions
 

Viewers also liked

Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Jukka Zitting
 
Introduction to JCR and Apache Jackrabbi
Introduction to JCR and Apache JackrabbiIntroduction to JCR and Apache Jackrabbi
Introduction to JCR and Apache JackrabbiJukka Zitting
 
TDWI Solution Summit San Diego 2014 Advanced Analytics at Macys.com
TDWI Solution Summit San Diego 2014 Advanced Analytics at Macys.comTDWI Solution Summit San Diego 2014 Advanced Analytics at Macys.com
TDWI Solution Summit San Diego 2014 Advanced Analytics at Macys.comDaqing Zhao
 
Shooting rabbits with sling
Shooting rabbits with slingShooting rabbits with sling
Shooting rabbits with slingTomasz Rękawek
 
Effective Web Application Development with Apache Sling
Effective Web Application Development with Apache SlingEffective Web Application Development with Apache Sling
Effective Web Application Development with Apache SlingRobert Munteanu
 
Distilling Hadoop Patterns of Use and How You Can Use Them for Your Big Data ...
Distilling Hadoop Patterns of Use and How You Can Use Them for Your Big Data ...Distilling Hadoop Patterns of Use and How You Can Use Them for Your Big Data ...
Distilling Hadoop Patterns of Use and How You Can Use Them for Your Big Data ...Hortonworks
 
JCR - Java Content Repositories
JCR - Java Content RepositoriesJCR - Java Content Repositories
JCR - Java Content RepositoriesCarsten Ziegeler
 
Integrating Apache Wookie with AEM by Rima Mittal and Ankit Gubrani
Integrating Apache Wookie with AEM by Rima Mittal and Ankit GubraniIntegrating Apache Wookie with AEM by Rima Mittal and Ankit Gubrani
Integrating Apache Wookie with AEM by Rima Mittal and Ankit GubraniAEM HUB
 
AEM (CQ) Dispatcher Caching Webinar 2013
AEM (CQ) Dispatcher Caching Webinar 2013AEM (CQ) Dispatcher Caching Webinar 2013
AEM (CQ) Dispatcher Caching Webinar 2013Andrew Khoury
 
Microservices for AEM by Maciej Majchrzak
Microservices for AEM by Maciej MajchrzakMicroservices for AEM by Maciej Majchrzak
Microservices for AEM by Maciej MajchrzakAEM HUB
 
Apache Sling : JCR, OSGi, Scripting and REST
Apache Sling : JCR, OSGi, Scripting and RESTApache Sling : JCR, OSGi, Scripting and REST
Apache Sling : JCR, OSGi, Scripting and RESTCarsten Ziegeler
 
The Zero Bullshit Architecture
The Zero Bullshit ArchitectureThe Zero Bullshit Architecture
The Zero Bullshit ArchitectureLars Trieloff
 
REST: From GET to HATEOAS
REST: From GET to HATEOASREST: From GET to HATEOAS
REST: From GET to HATEOASJos Dirksen
 
AEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser CachingAEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser CachingAndrew Khoury
 
Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt AEM HUB
 
Introduction to Information Architecture
Introduction to Information ArchitectureIntroduction to Information Architecture
Introduction to Information ArchitectureMike Crabb
 

Viewers also liked (20)

JCR In 10 Minutes
JCR In 10 MinutesJCR In 10 Minutes
JCR In 10 Minutes
 
Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3
 
Introduction to JCR and Apache Jackrabbi
Introduction to JCR and Apache JackrabbiIntroduction to JCR and Apache Jackrabbi
Introduction to JCR and Apache Jackrabbi
 
Togu CMS
Togu CMSTogu CMS
Togu CMS
 
TDWI Solution Summit San Diego 2014 Advanced Analytics at Macys.com
TDWI Solution Summit San Diego 2014 Advanced Analytics at Macys.comTDWI Solution Summit San Diego 2014 Advanced Analytics at Macys.com
TDWI Solution Summit San Diego 2014 Advanced Analytics at Macys.com
 
Shooting rabbits with sling
Shooting rabbits with slingShooting rabbits with sling
Shooting rabbits with sling
 
Using MapReduce for Large–scale Medical Image Analysis
Using MapReduce for Large–scale Medical Image AnalysisUsing MapReduce for Large–scale Medical Image Analysis
Using MapReduce for Large–scale Medical Image Analysis
 
Effective Web Application Development with Apache Sling
Effective Web Application Development with Apache SlingEffective Web Application Development with Apache Sling
Effective Web Application Development with Apache Sling
 
Distilling Hadoop Patterns of Use and How You Can Use Them for Your Big Data ...
Distilling Hadoop Patterns of Use and How You Can Use Them for Your Big Data ...Distilling Hadoop Patterns of Use and How You Can Use Them for Your Big Data ...
Distilling Hadoop Patterns of Use and How You Can Use Them for Your Big Data ...
 
JCR - Java Content Repositories
JCR - Java Content RepositoriesJCR - Java Content Repositories
JCR - Java Content Repositories
 
Integrating Apache Wookie with AEM by Rima Mittal and Ankit Gubrani
Integrating Apache Wookie with AEM by Rima Mittal and Ankit GubraniIntegrating Apache Wookie with AEM by Rima Mittal and Ankit Gubrani
Integrating Apache Wookie with AEM by Rima Mittal and Ankit Gubrani
 
AEM (CQ) Dispatcher Caching Webinar 2013
AEM (CQ) Dispatcher Caching Webinar 2013AEM (CQ) Dispatcher Caching Webinar 2013
AEM (CQ) Dispatcher Caching Webinar 2013
 
Microservices for AEM by Maciej Majchrzak
Microservices for AEM by Maciej MajchrzakMicroservices for AEM by Maciej Majchrzak
Microservices for AEM by Maciej Majchrzak
 
Apache Sling : JCR, OSGi, Scripting and REST
Apache Sling : JCR, OSGi, Scripting and RESTApache Sling : JCR, OSGi, Scripting and REST
Apache Sling : JCR, OSGi, Scripting and REST
 
Introduction to JCR
Introduction to JCR Introduction to JCR
Introduction to JCR
 
The Zero Bullshit Architecture
The Zero Bullshit ArchitectureThe Zero Bullshit Architecture
The Zero Bullshit Architecture
 
REST: From GET to HATEOAS
REST: From GET to HATEOASREST: From GET to HATEOAS
REST: From GET to HATEOAS
 
AEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser CachingAEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser Caching
 
Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt
 
Introduction to Information Architecture
Introduction to Information ArchitectureIntroduction to Information Architecture
Introduction to Information Architecture
 

Similar to Rapid JCR applications development with Sling

µjax in 30 minutes (for Stockholm)
µjax in 30 minutes (for Stockholm)µjax in 30 minutes (for Stockholm)
µjax in 30 minutes (for Stockholm)guestf67bc2
 
µjax in 30 minutes (for Stockholm)
µjax in 30 minutes (for Stockholm)µjax in 30 minutes (for Stockholm)
µjax in 30 minutes (for Stockholm)Lars Trieloff
 
Kuldeep presentation ppt
Kuldeep presentation pptKuldeep presentation ppt
Kuldeep presentation pptkuldeep khichar
 
Closing the DevOps gaps
Closing the DevOps gapsClosing the DevOps gaps
Closing the DevOps gapsdev2ops
 
Upgrading to System Verilog for FPGA Designs, Srinivasan Venkataramanan, CVC
Upgrading to System Verilog for FPGA Designs, Srinivasan Venkataramanan, CVCUpgrading to System Verilog for FPGA Designs, Srinivasan Venkataramanan, CVC
Upgrading to System Verilog for FPGA Designs, Srinivasan Venkataramanan, CVCFPGA Central
 
Wc Mand Connectors2
Wc Mand Connectors2Wc Mand Connectors2
Wc Mand Connectors2day
 
Session 49 Practical Semantic Sticky Note
Session 49 Practical Semantic Sticky NoteSession 49 Practical Semantic Sticky Note
Session 49 Practical Semantic Sticky NoteISSGC Summer School
 
Implementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPImplementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPKarsten Dambekalns
 
Session 49 - Semantic metadata management practical
Session 49 - Semantic metadata management practical Session 49 - Semantic metadata management practical
Session 49 - Semantic metadata management practical ISSGC Summer School
 
Web standards, why care?
Web standards, why care?Web standards, why care?
Web standards, why care?Thomas Roessler
 
Millions quotes per second in pure java
Millions quotes per second in pure javaMillions quotes per second in pure java
Millions quotes per second in pure javaRoman Elizarov
 
UTHOC2 - Under The Hood of Oracle Clusterware 2.0 - Grid Infrastructure by Al...
UTHOC2 - Under The Hood of Oracle Clusterware 2.0 - Grid Infrastructure by Al...UTHOC2 - Under The Hood of Oracle Clusterware 2.0 - Grid Infrastructure by Al...
UTHOC2 - Under The Hood of Oracle Clusterware 2.0 - Grid Infrastructure by Al...Alex Gorbachev
 
Upgrading to SystemVerilog for FPGA Designs - FPGA Camp Bangalore, 2010
Upgrading to SystemVerilog for FPGA Designs - FPGA Camp Bangalore, 2010Upgrading to SystemVerilog for FPGA Designs - FPGA Camp Bangalore, 2010
Upgrading to SystemVerilog for FPGA Designs - FPGA Camp Bangalore, 2010FPGA Central
 
Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5
Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5
Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5David Nuescheler
 
Web Content Management And Agile
Web Content Management And AgileWeb Content Management And Agile
Web Content Management And AgileValtech UK
 
tree-sitter-objc-slides.pptx
tree-sitter-objc-slides.pptxtree-sitter-objc-slides.pptx
tree-sitter-objc-slides.pptxJiyee Sheng
 

Similar to Rapid JCR applications development with Sling (20)

Taming Jcr With Sling
Taming Jcr With SlingTaming Jcr With Sling
Taming Jcr With Sling
 
Jazoon 2009
Jazoon 2009Jazoon 2009
Jazoon 2009
 
µjax in 30 minutes (for Stockholm)
µjax in 30 minutes (for Stockholm)µjax in 30 minutes (for Stockholm)
µjax in 30 minutes (for Stockholm)
 
µjax in 30 minutes (for Stockholm)
µjax in 30 minutes (for Stockholm)µjax in 30 minutes (for Stockholm)
µjax in 30 minutes (for Stockholm)
 
µjax in 30 minutes
µjax in 30 minutesµjax in 30 minutes
µjax in 30 minutes
 
Kuldeep presentation ppt
Kuldeep presentation pptKuldeep presentation ppt
Kuldeep presentation ppt
 
Closing the DevOps gaps
Closing the DevOps gapsClosing the DevOps gaps
Closing the DevOps gaps
 
Upgrading to System Verilog for FPGA Designs, Srinivasan Venkataramanan, CVC
Upgrading to System Verilog for FPGA Designs, Srinivasan Venkataramanan, CVCUpgrading to System Verilog for FPGA Designs, Srinivasan Venkataramanan, CVC
Upgrading to System Verilog for FPGA Designs, Srinivasan Venkataramanan, CVC
 
Wc Mand Connectors2
Wc Mand Connectors2Wc Mand Connectors2
Wc Mand Connectors2
 
Session 49 Practical Semantic Sticky Note
Session 49 Practical Semantic Sticky NoteSession 49 Practical Semantic Sticky Note
Session 49 Practical Semantic Sticky Note
 
Implementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPImplementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHP
 
Session 49 - Semantic metadata management practical
Session 49 - Semantic metadata management practical Session 49 - Semantic metadata management practical
Session 49 - Semantic metadata management practical
 
Web standards, why care?
Web standards, why care?Web standards, why care?
Web standards, why care?
 
Millions quotes per second in pure java
Millions quotes per second in pure javaMillions quotes per second in pure java
Millions quotes per second in pure java
 
UTHOC2 - Under The Hood of Oracle Clusterware 2.0 - Grid Infrastructure by Al...
UTHOC2 - Under The Hood of Oracle Clusterware 2.0 - Grid Infrastructure by Al...UTHOC2 - Under The Hood of Oracle Clusterware 2.0 - Grid Infrastructure by Al...
UTHOC2 - Under The Hood of Oracle Clusterware 2.0 - Grid Infrastructure by Al...
 
Upgrading to SystemVerilog for FPGA Designs - FPGA Camp Bangalore, 2010
Upgrading to SystemVerilog for FPGA Designs - FPGA Camp Bangalore, 2010Upgrading to SystemVerilog for FPGA Designs - FPGA Camp Bangalore, 2010
Upgrading to SystemVerilog for FPGA Designs - FPGA Camp Bangalore, 2010
 
Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5
Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5
Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5
 
Web Content Management And Agile
Web Content Management And AgileWeb Content Management And Agile
Web Content Management And Agile
 
Agile Edge Valtech
Agile Edge ValtechAgile Edge Valtech
Agile Edge Valtech
 
tree-sitter-objc-slides.pptx
tree-sitter-objc-slides.pptxtree-sitter-objc-slides.pptx
tree-sitter-objc-slides.pptx
 

More from Bertrand Delacretaz

VanillaJS & the Web Platform, a match made in heaven?
VanillaJS & the Web Platform, a match made in heaven?VanillaJS & the Web Platform, a match made in heaven?
VanillaJS & the Web Platform, a match made in heaven?Bertrand Delacretaz
 
Surviving large online communities with conciseness and clarity
Surviving large online communities with conciseness and clarity Surviving large online communities with conciseness and clarity
Surviving large online communities with conciseness and clarity Bertrand Delacretaz
 
Repoinit: a mini-language for content repository initialization
Repoinit: a mini-language for content repository initializationRepoinit: a mini-language for content repository initialization
Repoinit: a mini-language for content repository initializationBertrand Delacretaz
 
The Moving House Model, adhocracy and remote collaboration
The Moving House Model, adhocracy and remote collaborationThe Moving House Model, adhocracy and remote collaboration
The Moving House Model, adhocracy and remote collaborationBertrand Delacretaz
 
GraphQL in Apache Sling - but isn't it the opposite of REST?
GraphQL in Apache Sling - but isn't it the opposite of REST?GraphQL in Apache Sling - but isn't it the opposite of REST?
GraphQL in Apache Sling - but isn't it the opposite of REST?Bertrand Delacretaz
 
How to convince your left brain (or manager) to follow the Open Source path t...
How to convince your left brain (or manager) to follow the Open Source path t...How to convince your left brain (or manager) to follow the Open Source path t...
How to convince your left brain (or manager) to follow the Open Source path t...Bertrand Delacretaz
 
L'Open Source change le Monde - BlendWebMix 2019
L'Open Source change le Monde - BlendWebMix 2019L'Open Source change le Monde - BlendWebMix 2019
L'Open Source change le Monde - BlendWebMix 2019Bertrand Delacretaz
 
Shared Neurons - the Secret Sauce of Open Source communities?
Shared Neurons - the Secret Sauce of Open Source communities?Shared Neurons - the Secret Sauce of Open Source communities?
Shared Neurons - the Secret Sauce of Open Source communities?Bertrand Delacretaz
 
Sling and Serverless, Best Friends Forever?
Sling and Serverless, Best Friends Forever?Sling and Serverless, Best Friends Forever?
Sling and Serverless, Best Friends Forever?Bertrand Delacretaz
 
Serverless - introduction et perspectives concrètes
Serverless - introduction et perspectives concrètesServerless - introduction et perspectives concrètes
Serverless - introduction et perspectives concrètesBertrand Delacretaz
 
State of the Feather - ApacheCon North America 2018
State of the Feather - ApacheCon North America 2018State of the Feather - ApacheCon North America 2018
State of the Feather - ApacheCon North America 2018Bertrand Delacretaz
 
Karate, the black belt of HTTP API testing?
Karate, the black belt of HTTP API testing?Karate, the black belt of HTTP API testing?
Karate, the black belt of HTTP API testing?Bertrand Delacretaz
 
Open Source at Scale: the Apache Software Foundation (2018)
Open Source at Scale: the Apache Software Foundation (2018)Open Source at Scale: the Apache Software Foundation (2018)
Open Source at Scale: the Apache Software Foundation (2018)Bertrand Delacretaz
 
They don't understand me! Tales from the multi-cultural trenches
They don't understand me! Tales from the multi-cultural trenchesThey don't understand me! Tales from the multi-cultural trenches
They don't understand me! Tales from the multi-cultural trenchesBertrand Delacretaz
 
Prise de Décisions Asynchrone, Devoxx France 2018 (avec vidéo)
Prise de Décisions Asynchrone, Devoxx France 2018 (avec vidéo)Prise de Décisions Asynchrone, Devoxx France 2018 (avec vidéo)
Prise de Décisions Asynchrone, Devoxx France 2018 (avec vidéo)Bertrand Delacretaz
 
Project and Community Services the Apache Way
Project and Community Services the Apache WayProject and Community Services the Apache Way
Project and Community Services the Apache WayBertrand Delacretaz
 
La Fondation Apache - keynote au Paris Open Source Summit 2017
La Fondation Apache - keynote au Paris Open Source Summit 2017La Fondation Apache - keynote au Paris Open Source Summit 2017
La Fondation Apache - keynote au Paris Open Source Summit 2017Bertrand Delacretaz
 
Asynchronous Decision Making - FOSS Backstage 2017
Asynchronous Decision Making - FOSS Backstage 2017Asynchronous Decision Making - FOSS Backstage 2017
Asynchronous Decision Making - FOSS Backstage 2017Bertrand Delacretaz
 
Building an Apache Sling Rendering Farm
Building an Apache Sling Rendering FarmBuilding an Apache Sling Rendering Farm
Building an Apache Sling Rendering FarmBertrand Delacretaz
 

More from Bertrand Delacretaz (20)

VanillaJS & the Web Platform, a match made in heaven?
VanillaJS & the Web Platform, a match made in heaven?VanillaJS & the Web Platform, a match made in heaven?
VanillaJS & the Web Platform, a match made in heaven?
 
Surviving large online communities with conciseness and clarity
Surviving large online communities with conciseness and clarity Surviving large online communities with conciseness and clarity
Surviving large online communities with conciseness and clarity
 
Repoinit: a mini-language for content repository initialization
Repoinit: a mini-language for content repository initializationRepoinit: a mini-language for content repository initialization
Repoinit: a mini-language for content repository initialization
 
The Moving House Model, adhocracy and remote collaboration
The Moving House Model, adhocracy and remote collaborationThe Moving House Model, adhocracy and remote collaboration
The Moving House Model, adhocracy and remote collaboration
 
GraphQL in Apache Sling - but isn't it the opposite of REST?
GraphQL in Apache Sling - but isn't it the opposite of REST?GraphQL in Apache Sling - but isn't it the opposite of REST?
GraphQL in Apache Sling - but isn't it the opposite of REST?
 
Open Source Changes the World!
Open Source Changes the World!Open Source Changes the World!
Open Source Changes the World!
 
How to convince your left brain (or manager) to follow the Open Source path t...
How to convince your left brain (or manager) to follow the Open Source path t...How to convince your left brain (or manager) to follow the Open Source path t...
How to convince your left brain (or manager) to follow the Open Source path t...
 
L'Open Source change le Monde - BlendWebMix 2019
L'Open Source change le Monde - BlendWebMix 2019L'Open Source change le Monde - BlendWebMix 2019
L'Open Source change le Monde - BlendWebMix 2019
 
Shared Neurons - the Secret Sauce of Open Source communities?
Shared Neurons - the Secret Sauce of Open Source communities?Shared Neurons - the Secret Sauce of Open Source communities?
Shared Neurons - the Secret Sauce of Open Source communities?
 
Sling and Serverless, Best Friends Forever?
Sling and Serverless, Best Friends Forever?Sling and Serverless, Best Friends Forever?
Sling and Serverless, Best Friends Forever?
 
Serverless - introduction et perspectives concrètes
Serverless - introduction et perspectives concrètesServerless - introduction et perspectives concrètes
Serverless - introduction et perspectives concrètes
 
State of the Feather - ApacheCon North America 2018
State of the Feather - ApacheCon North America 2018State of the Feather - ApacheCon North America 2018
State of the Feather - ApacheCon North America 2018
 
Karate, the black belt of HTTP API testing?
Karate, the black belt of HTTP API testing?Karate, the black belt of HTTP API testing?
Karate, the black belt of HTTP API testing?
 
Open Source at Scale: the Apache Software Foundation (2018)
Open Source at Scale: the Apache Software Foundation (2018)Open Source at Scale: the Apache Software Foundation (2018)
Open Source at Scale: the Apache Software Foundation (2018)
 
They don't understand me! Tales from the multi-cultural trenches
They don't understand me! Tales from the multi-cultural trenchesThey don't understand me! Tales from the multi-cultural trenches
They don't understand me! Tales from the multi-cultural trenches
 
Prise de Décisions Asynchrone, Devoxx France 2018 (avec vidéo)
Prise de Décisions Asynchrone, Devoxx France 2018 (avec vidéo)Prise de Décisions Asynchrone, Devoxx France 2018 (avec vidéo)
Prise de Décisions Asynchrone, Devoxx France 2018 (avec vidéo)
 
Project and Community Services the Apache Way
Project and Community Services the Apache WayProject and Community Services the Apache Way
Project and Community Services the Apache Way
 
La Fondation Apache - keynote au Paris Open Source Summit 2017
La Fondation Apache - keynote au Paris Open Source Summit 2017La Fondation Apache - keynote au Paris Open Source Summit 2017
La Fondation Apache - keynote au Paris Open Source Summit 2017
 
Asynchronous Decision Making - FOSS Backstage 2017
Asynchronous Decision Making - FOSS Backstage 2017Asynchronous Decision Making - FOSS Backstage 2017
Asynchronous Decision Making - FOSS Backstage 2017
 
Building an Apache Sling Rendering Farm
Building an Apache Sling Rendering FarmBuilding an Apache Sling Rendering Farm
Building an Apache Sling Rendering Farm
 

Recently uploaded

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Recently uploaded (20)

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

Rapid JCR applications development with Sling

  • 1. Rapid JCR applications development with Apache Sling Bertrand Delacrétaz Senior R&D Developer, Day Software, www.day.com Member and Director, ASF bdelacretaz@apache.org blog at http:/ /grep.codeconsult.ch twitter: @bdelacretaz Slides revision: 2009-03- 20 Slides theme design: David Nuescheler Wednesday, March 25, 2009
  • 2. Rapid JCR applications development with Apache Sling Bertrand Delacrétaz Senior R&D Developer, Day Software, www.day.com Member and Director, ASF bdelacretaz@apache.org blog at http:/ /grep.codeconsult.ch twitter: @bdelacretaz Slides revision: 2009-03- 20 Slides theme design: David Nuescheler is thi busy s slide enou gh? Wednesday, March 25, 2009
  • 3. Intro to JCR JCR = Java Content Repository API JSR-170 / JSR283 - Everything Is Content - and JCR manages it as trees of Nodes and Properties, using rich data types. Wednesday, March 25, 2009
  • 4. Intro to JCR JCR = Java Content Repository API JSR-170 / JSR283 - silve r Everything Is Content - and JCR manages it as trees of Nodes and Properties, using rich data types. Wednesday, March 25, 2009
  • 5. What’s JCR? JSR-170 Content Repository for JavaTM technology API Spec-Lead: Day Software Status: Final Release 17-jun-2005 Expert Group: Wednesday, March 25, 2009
  • 6. What’s JCR? JSR-170 JSR-283 Content Repository for JavaTM technology API v2.0 Spec-Lead: Day Software Status: Public Review Closed sep-2007 Expert Group: Wednesday, March 25, 2009
  • 9. What’s JCR? “The API should be a standard, implementation independent, way to access content bi-directionally on a granular level to a content repository.” Wednesday, March 25, 2009
  • 10. What’s JCR? “The API should be a standard, implementation independent, way to access content bi-directionally on a granular level to a content repository.” ? Wednesday, March 25, 2009
  • 11. What’s JCR? “The API should be a standard, implementation independent, way to access content bi-directionally on a granular level to a content repository.” ? Wednesday, March 25, 2009
  • 12. Best of both worlds. data base file s ys t e m hier- archi integ rity re es structu read streams tx write access query locking control multi- value ning obser- versio un-structured “full-text” sort vation order content repo sit or y Wednesday, March 25, 2009
  • 13. Best of both worlds. data base file s ys t e m hier- archi integ rity re es structu read streams tx write access query locking control multi- value ning obser- versio un-structured “full-text” sort vation order content repo sit or y Wednesday, March 25, 2009
  • 15. Known compliant Repositories * using third party connector * * Apache Exo Microsoft OpenText Jackrabbit Oracle XML DB ECMS Platform Sharepoint Livelink * Xythos Day CRX IBM FileNet P8 Repository Alfresco ECM Vignette V7 * * any ors ow mvendd? H S e +hun dre DBMou ne R do y Interwoven EMC TCKsds of regis Repository IBM CM Documentum tered Wednesday, March 25, 2009
  • 16. Some known JCR Applications Wednesday, March 25, 2009
  • 17. Some known JCR Applications Fast Enterprise BEA Portal Sun Oracle Portal Interface 21Search OpenPortal JBoss Portal Day Spring Communique Framework DAM Day magnolia WCMS Apache Sling Communique Alfresco ECMS Mindquarry ApacheCollab Collaboration Tapestry QSLabs Day Apache Compliance Communiqué IBM FileNet Cocoon WCMS Artifactory medic-2-medic WebSiteManage r Apache James Maven Proxy mapofmedicine Exo GX ECMS Platform TYPO3 WebManager v5.0 WCM InfoQ Liferay Online Hippo Enterprise Nuxeo ECM Community CMS Portal Jahia Sakai Percussion Framework E-learning Rhythmix QuickWCM Sourcemix WCMS Lutece Sourcemix Portal Wednesday, March 25, 2009
  • 18. Some known JCR Applications Fast Enterprise BEA Portal Sun Oracle Portal Interface 21Search OpenPortal JBoss Portal Day Spring Communique Framework DAM Day magnolia WCMS Apache Sling Communique Alfresco ECMS Mindquarry ApacheCollab Collaboration Tapestry QSLabs Day Apache Compliance Communiqué IBM FileNet Cocoon WCMS Artifactory medic-2-medic WebSiteManage r Apache James Maven Proxy mapofmedicine Exo GX ECMS Platform TYPO3 WebManager v5.0 WCM InfoQ Liferay Online Hippo Enterprise Nuxeo ECM Community CMS Portal Jahia Sakai Percussion Framework E-learning Rhythmix QuickWCM Sourcemix WCMS Lutece Sourcemix Portal Wednesday, March 25, 2009
  • 19. JCR code excerpt Repository repository = new TransientRepository(); Session session = repository.login(...); / Create content / Node root = session.getRootNode(); Node hello = root.addNode(quot;helloquot;); Node world = hello.addNode(quot;worldquot;); world.setProperty(quot;messagequot;, quot;Hello, World!quot;); session.save(); / Retrieve content / Node node = root.getNode(quot;hello/worldquot;); print(node.getPath()); print(node.getProperty(quot;messagequot;).getString()); Wednesday, March 25, 2009
  • 20. On to Sling Wednesday, March 25, 2009
  • 21. Sling builds on top of JCR Scriptable applications layer on top of JCR OSGi-based industrial-strength framework Simple, powerful, JCR inside Runs on Apache Jackrabbit by default http:/ /incubator.apache.org/sling Wednesday, March 25, 2009
  • 22. Sling builds on top of JCR Scriptable applications layer on top of JCR OSGi-based industrial-strength framework Simple, powerful, JCR inside Runs on Apache Jackrabbit by default http:/ /incubator.apache.org/sling join t he fun! Wednesday, March 25, 2009
  • 23. Sling == REST over JCR Wednesday, March 25, 2009
  • 24. Sling == REST over JCR REST -> Roy T. Fielding scheler JCR: David Nue 2005 rele a 1.0 r v ele ased sed y 162 p 2k +300 pages ages Wednesday, March 25, 2009
  • 25. Reclaiming the web. Sling URL decomposition. /cars/audi/s4.details.html Wednesday, March 25, 2009
  • 26. Reclaiming the web. Sling URL decomposition. /cars/audi/s4.details.html Repository Wednesday, March 25, 2009
  • 27. Reclaiming the web. Sling URL decomposition. /cars/audi/s4.details.html Content Repository epository Path R Wednesday, March 25, 2009
  • 28. Reclaiming the web. Sling URL decomposition. /cars/audi/s4.details.html Content Repository epository Path R Wednesday, March 25, 2009
  • 29. Reclaiming the web. Sling URL decomposition. /cars/audi/s4.details.html Content ...selects a Repository epository Path R particular scrip t Wednesday, March 25, 2009
  • 30. Sling architecture HTTP debugger filesystem browser standard custom servlets WebDAV Sling OSGi servlets and components server console javascript resource servlet/script OSGi bundles JSR 223 JSP Ruby resolution resolution scripting OSGi framework Velocity etc.. (Apache Felix) OSGi webapp JSR-170 API JCR repository Wednesday, March 25, 2009
  • 31. Sling architecture HTTP sling.js debugger filesystem browser utilit y POST, V json GE T WebDA access standard custom servlets WebDAV Sling OSGi servlets and components server console javascript resource servlet/script OSGi bundles JSR 223 JSP Ruby resolution resolution scripting OSGi framework Velocity etc.. (Apache Felix) OSGi webapp ESP de se r ver-si t ip JSR-170 API javascr JCR repository Wednesday, March 25, 2009
  • 32. A minimalone .esp script blog Consisting of Sling cat /Volumes/localhost/apps/blog/blog.esp | wc -l 54 Wednesday, March 25, 2009
  • 33. from e code : ge t th ay.com dev.d url.com/ /tiny 6 ht tp:/ gblog4 slin A minimalone .esp script blog Consisting of Sling cat /Volumes/localhost/apps/blog/blog.esp | wc -l 54 Wednesday, March 25, 2009
  • 34. Sling POST servlet # POST to Sling curl -F title=hello http://localhost:8888/foo -> 200 OK # GET created node in json format curl http:/ /localhost:8888/foo.tidy.json { quot;jcr:primaryTypequot;: quot;nt:unstructuredquot;, quot;titlequot;: quot;helloquot; } Wednesday, March 25, 2009
  • 35. Sling POST servlet # POST to Sling curl -F title=hello http://localhost:8888/foo -> 200 OK POST se t e ters s # GET created node in json format param opertie curl http:/ /localhost:8888/foo.tidy.json node pr { quot;jcr:primaryTypequot;: quot;nt:unstructuredquot;, quot;titlequot;: quot;helloquot; } Wednesday, March 25, 2009
  • 36. blog step 1: create content ! <form method=quot;POSTquot;> ! Title: ! <input type=quot;textquot; name=quot;titlequot; style=quot;width:100%quot;/> ! ! Text: ! <textarea style=quot;width:100%quot; name=quot;textquot;></textarea> ! ! <input type=quot;submitquot; value=quot;savequot;/> ! ! <input type=quot;hiddenquot; name=quot;:redirectquot; value=quot;*quot;/> ! </form> Wednesday, March 25, 2009
  • 37. blog step 1: create content ! <form method=quot;POSTquot;> ! Title: ! <input type=quot;textquot; name=quot;titlequot; style=quot;width:100%quot;/> ! ! Text: ! <textarea style=quot;width:100%quot; name=quot;textquot;></textarea> ! ! <input type=quot;submitquot; value=quot;savequot;/> ! ! <input type=quot;hiddenquot; name=quot;:redirectquot; value=quot;*quot;/> ! </form> dri ve fields t Form onten the c el mod Wednesday, March 25, 2009
  • 38. blog step 2: retrieve content <script src=quot;/system/sling.jsquot;></script>! <form method=quot;POSTquot;> ... </form> <!-- initialize form fields from current node values --> <script>Sling.wizard();</script> Wednesday, March 25, 2009
  • 39. blog step 2: retrieve content <script src=quot;/system/sling.jsquot;></script>! <form method=quot;POSTquot;> ... </form> <!-- initialize form fields from current node values --> <script>Sling.wizard();</script> U(D) Inst ant CR Wednesday, March 25, 2009
  • 40. blog step 3: navigation <ul> <li> <a href=quot;/content/blog/*quot;> [Create new post]</a> </li> ! <script> ! var posts = Sling.getContent(quot;/content/blogquot;, 2); ! for(var post in posts) { ! ! document.write( quot;<li><a href=’” + post + quot;'>quot; + posts[post].title + quot;</a></li>quot;); ! } ! </script> </ul> Wednesday, March 25, 2009
  • 41. we got a blog! html form + Sling.wizard() + Sling.getContent() Wednesday, March 25, 2009
  • 42. The ESP blog sample ESP scripting + java + javascript OSGi bundle, initial content, WebDAV, observation, RAD Wednesday, March 25, 2009
  • 43. The ESP blog sample ESP scripting + java + javascript OSGi bundle, initial content, WebDAV, observation, RAD mples ng/sa / der sli rl.com de un inyu Co ht tp:/ t logesp / slingb Wednesday, March 25, 2009
  • 44. ESP blog in action create retrieve thumbnails update Wednesday, March 25, 2009
  • 46. ESP blog source files admin.esp pom.xml edit.esp ThumbnailGeneratorService.java html.esp ThumbnailGeneratorServiceImpl.java list.esp espblog.css menu.esp sling-logo.png xml.esp (RSS feed) constants.esp header.esp Wednesday, March 25, 2009
  • 47. ESP blog source files admin.esp pom.xml edit.esp ThumbnailGeneratorService.java html.esp ThumbnailGeneratorServiceImpl.java list.esp espblog.css menu.esp sling-logo.png xml.esp (RSS feed) constants.esp source log re s to espb oint header.esp t ype p ripts those sc Wednesday, March 25, 2009
  • 48. ESP blog content structure JSON dump WebDAV view Wednesday, March 25, 2009
  • 49. <% ESP blog edit script pageTitle = currentNode.title; load(quot;header.espquot;); %> <body> <form method=quot;POSTquot; action=quot;<%= currentNode %>quot;> <p><label>Title</label> <input name=quot;titlequot; type=quot;textquot; value=quot;<%= currentNode.title %>quot;></p> ... <input type=quot;hiddenquot; name=quot;createdquot;/> <input name=quot;:redirectquot; type=quot;hiddenquot; value=quot;/content/espblog/posts.admin.htmlquot;/> <input type=quot;submitquot; value=quot;Postquot; class=quot;buttonquot;> </form> ... Wednesday, March 25, 2009
  • 50. ESP blog thumbnails: OSGi service /** * Observe the espblog content for changes, and generate * thumbnails when images are added. * * maven-scr-plugin uses annotations to generate the OSGi * Declarative Services XML configuration files * @scr.service * @scr.component immediate=quot;truequot; * */ public class ThumbnailGeneratorServiceImpl implements ThumbnailGeneratorService, EventListener { Wednesday, March 25, 2009
  • 51. ESP blog thumbnails: observation /** @scr.reference (framework injects it automatically) */ private SlingRepository repository; /** called by framework when service is activated */ protected void activate(ComponentContext context) { Session s = repository.loginAdministrative(null); / Listen for nt:file NODE_ADDED repository events / ObservationManager m = s.getWorkspace().getObservationManager(); ! String[] types = { quot;nt:filequot; }; ! m.addEventListener( this, Event.NODE_ADDED, contentPath, ...); Wednesday, March 25, 2009
  • 52. ESP blog thumbnails: NODE_ADDED /** Called by JCR Observation manager for events that this * EventListener registered for */ public void onEvent(EventIterator it) { while (it.hasNext()) { Event event = it.nextEvent(); if (event.getType() == Event.NODE_ADDED && !(event.getPath().contains(quot;thumbnailsquot;))) { String p = event.getPath(); Node n = session.getRootNode().getNode(p); createThumbnails(addedNode); } } ... Wednesday, March 25, 2009
  • 53. We got a typical Sling application! JCR features: WebDAV, observation, nt:unstructured. Sling goodies: simple script mappings (BYOL), POST servlet, RESTful interface. OSGi bundle, code + initial content, Maven plugins. Wednesday, March 25, 2009
  • 54. We got a typical Sling application! JCR features: WebDAV, observation, nt:unstructured. Sling goodies: simple script mappings (BYOL), POST servlet, RESTful interface. ource blog s under ESP found es ode is ampl OSGi bundle, code + initial c sling/s content, Maven plugins. Wednesday, March 25, 2009
  • 55. Where is Sling going? Wednesday, March 25, 2009
  • 56. Where is Sling going? (aka conclusion) First web framework designed for JCR. Embrace the web, act like a very clever web server! Intelligent HTTP/JSON storage? OSGi, organic app growth. Growing community, graduate in 2009? http://incubator.apache.org/sling http://dev.day.com http://contentcentric.org/ Wednesday, March 25, 2009
  • 57. Where is Sling going? (aka conclusion) First web framework designed for JCR. Embrace the web, act like a very clever web server! Intelligent HTTP/JSON storage? not a web OSGi, organic app growth. “Sling is s ation a applic k, it’s fram e wor Growing community, graduate ame work” in 2009? w eb f r http://incubator.apache.org/sling http://dev.day.com join t hehttp://contentcentric.org/ fun! Wednesday, March 25, 2009

Editor's Notes