SlideShare una empresa de Scribd logo
1 de 61
Descargar para leer sin conexión
OSGi, Scripting & REST
Web Development with Apache Sling
Carsten Ziegeler | Day Software
cziegeler@apache.org
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



Agenda – Apache Sling
1       Motivation
2       Content and JCR
3       Web and REST
4       Scripting
5       OSGi
6       Outlook



                          3
4




1 Motivation


               4
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



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



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



Example: Apache Sling Powered Site
9




2 Content/JCR


                9
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



Content Repository
• Generic application data store
• Structured and unstructured content
• Support small and large-scale data
• Locking, transactions, versioning, observation
 and searching




                                              11
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



Sample Application
• Digital Asset Management                Poor man's flickr...
     – Hierarchical storage of pictures
     – Upload
     – Tagging
     – Searching
     – Automatic thumbnail generation




                                                             13
14



Content Repository Features
• Hierarchical content
     – Nodes and properties
• Structured
     – Nodetypes and typed properties
• And/or unstructured
• Fine and coarse-grained


                                        14
15



Sample Content Structure


                       Travel              Family


                  Europe                            Weddings


      Amsterdam            Basel                         2008


                                City                            Photo
                                                     Photo
       2007

                                       Photo
        Photo


                                                                        15
16



Content Repository Features
         Query (XPath, SQL)
•
         Export/Import (XML)
•
         Referential Integrity
•
         Authentication
•
         Access Control
•
         Versioning
•
         Observation
•
         Locking and Transactions (JTA)
•
                                          16
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



Content Repository )JCR – JSR 170(




                                 18
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



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



Apache Jackrabbit
• JSR 170 reference implementation
• Apache TLP since 2006
• Several releases
• JCR 2.0 RI later this year
• Additional components
22



Leverage the standard node types
     • Type hierarchy             • Content hierarchy

     nt:hierarchyNode

                     nt:folder

                        nt:file

                  nt:linkedFile

       nt:resource




                                                        22
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



Modeling: Content Hierarchies


                        Travel              Family


                   Europe                            Weddings


       Amsterdam            Basel                         2008


                                 City                            Photo
                                                      Photo
       2007

                                        Photo
        Photo


                                                                         24
25




3 ROA and REST


             25
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



REST with Apache Sling
• Default behaviour for GET
• Creating/Updating content through POST
     – Default behaviour
• Additional operations/method
• Resource-first request processing!



                                           27
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



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



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



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



Resource-First Request Processing
request
                Resource Resolver

                        Resource (resource type)
                 Script Resolver


                    Script


     response


                                                   32
33




4 Scripting


              33
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



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



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



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



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



Powerful Scripting with Includes II
      Request: /albums/travel.html

                    Script (/libs/my/Album/html.jsp)

       <sling:include resource=quot;<%= current %>quot; addSelectors=quot;treequot;/>
       …



                     Script Resolver

                   Script: /libs/my/Album/tree.html.jsp

                                   Script
     response
40




5 OSGi


         40
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



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



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



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



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
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
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
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
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



Standalone Java Application
• One single executable JAR file
• Small Launcher
• Starts OSGi Framework (Apache Felix)
• Uses Jetty in an OSGi Bundle




                                         50
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



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



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




6 Outlook


            54
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



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



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



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



...with Apache Sling: State of the Art
• Modularity and dynamics (OSGi)
• Content Management (JCR)
• Resource oriented architecture (REST)
• Scripting inside




                                          59
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



     Thanks for your attention!



               Q&A

Más contenido relacionado

La actualidad más candente

Introduction to JPA and Hibernate including examples
Introduction to JPA and Hibernate including examplesIntroduction to JPA and Hibernate including examples
Introduction to JPA and Hibernate including examplesecosio GmbH
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced JavascriptDhruvin Shah
 
AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101Adobe
 
Spring framework IOC and Dependency Injection
Spring framework  IOC and Dependency InjectionSpring framework  IOC and Dependency Injection
Spring framework IOC and Dependency InjectionAnuj Singh Rajput
 
Angular 7 Firebase5 CRUD Operations with Reactive Forms
Angular 7 Firebase5 CRUD Operations with Reactive FormsAngular 7 Firebase5 CRUD Operations with Reactive Forms
Angular 7 Firebase5 CRUD Operations with Reactive FormsDigamber Singh
 
Angular - Chapter 7 - HTTP Services
Angular - Chapter 7 - HTTP ServicesAngular - Chapter 7 - HTTP Services
Angular - Chapter 7 - HTTP ServicesWebStackAcademy
 
[2019] DDD Lite@Spring
[2019] DDD Lite@Spring[2019] DDD Lite@Spring
[2019] DDD Lite@SpringNHN FORWARD
 
jpa-hibernate-presentation
jpa-hibernate-presentationjpa-hibernate-presentation
jpa-hibernate-presentationJohn Slick
 
Angular Introduction By Surekha Gadkari
Angular Introduction By Surekha GadkariAngular Introduction By Surekha Gadkari
Angular Introduction By Surekha GadkariSurekha Gadkari
 
Angular directives and pipes
Angular directives and pipesAngular directives and pipes
Angular directives and pipesKnoldus Inc.
 
ES2015 / ES6: Basics of modern Javascript
ES2015 / ES6: Basics of modern JavascriptES2015 / ES6: Basics of modern Javascript
ES2015 / ES6: Basics of modern JavascriptWojciech Dzikowski
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to JavascriptAmit Tyagi
 

La actualidad más candente (20)

Deep Dive: AWS CloudFormation
Deep Dive: AWS CloudFormationDeep Dive: AWS CloudFormation
Deep Dive: AWS CloudFormation
 
Introduction to JPA and Hibernate including examples
Introduction to JPA and Hibernate including examplesIntroduction to JPA and Hibernate including examples
Introduction to JPA and Hibernate including examples
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced Javascript
 
Getting started with entity framework
Getting started with entity framework Getting started with entity framework
Getting started with entity framework
 
AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101
 
Spring framework IOC and Dependency Injection
Spring framework  IOC and Dependency InjectionSpring framework  IOC and Dependency Injection
Spring framework IOC and Dependency Injection
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Angular 7 Firebase5 CRUD Operations with Reactive Forms
Angular 7 Firebase5 CRUD Operations with Reactive FormsAngular 7 Firebase5 CRUD Operations with Reactive Forms
Angular 7 Firebase5 CRUD Operations with Reactive Forms
 
Angular - Chapter 7 - HTTP Services
Angular - Chapter 7 - HTTP ServicesAngular - Chapter 7 - HTTP Services
Angular - Chapter 7 - HTTP Services
 
[2019] DDD Lite@Spring
[2019] DDD Lite@Spring[2019] DDD Lite@Spring
[2019] DDD Lite@Spring
 
JPA and Hibernate
JPA and HibernateJPA and Hibernate
JPA and Hibernate
 
Angular IO
Angular IOAngular IO
Angular IO
 
jpa-hibernate-presentation
jpa-hibernate-presentationjpa-hibernate-presentation
jpa-hibernate-presentation
 
Angular Introduction By Surekha Gadkari
Angular Introduction By Surekha GadkariAngular Introduction By Surekha Gadkari
Angular Introduction By Surekha Gadkari
 
Angular directives and pipes
Angular directives and pipesAngular directives and pipes
Angular directives and pipes
 
ES2015 / ES6: Basics of modern Javascript
ES2015 / ES6: Basics of modern JavascriptES2015 / ES6: Basics of modern Javascript
ES2015 / ES6: Basics of modern Javascript
 
Sightly - Part 2
Sightly - Part 2Sightly - Part 2
Sightly - Part 2
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to Javascript
 
Testing Spring Applications
Testing Spring ApplicationsTesting Spring Applications
Testing Spring Applications
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 

Destacado

Rapid RESTful Web Applications with Apache Sling and Jackrabbit
Rapid RESTful Web Applications with Apache Sling and JackrabbitRapid RESTful Web Applications with Apache Sling and Jackrabbit
Rapid RESTful Web Applications with Apache Sling and JackrabbitCraig Dickson
 
Build Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBob Paulin
 
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
 
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
 
Deepak khetawat sling_models_sightly_jsp
Deepak khetawat sling_models_sightly_jspDeepak khetawat sling_models_sightly_jsp
Deepak khetawat sling_models_sightly_jspDEEPAK KHETAWAT
 
Apache Sling - The whys and the hows
Apache Sling - The whys and the howsApache Sling - The whys and the hows
Apache Sling - The whys and the howsRobert Munteanu
 
RESTful web apps with Apache Sling - 2013 version
RESTful web apps with Apache Sling - 2013 versionRESTful web apps with Apache Sling - 2013 version
RESTful web apps with Apache Sling - 2013 versionBertrand Delacretaz
 
RESTFul development with Apache sling
RESTFul development with Apache slingRESTFul development with Apache sling
RESTFul development with Apache slingSergii Fesenko
 
Apache Sling as an OSGi-powered REST middleware
Apache Sling as an OSGi-powered REST middlewareApache Sling as an OSGi-powered REST middleware
Apache Sling as an OSGi-powered REST middlewareRobert Munteanu
 
OSGi, Scripting and REST, Building Webapps With Apache Sling
OSGi, Scripting and REST, Building Webapps With Apache SlingOSGi, Scripting and REST, Building Webapps With Apache Sling
OSGi, Scripting and REST, Building Webapps With Apache SlingCarsten Ziegeler
 
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
 
Service oriented web development with OSGi
Service oriented web development with OSGiService oriented web development with OSGi
Service oriented web development with OSGiCarsten Ziegeler
 
Declarative Services - Dependency Injection OSGi Style
Declarative Services - Dependency Injection OSGi StyleDeclarative Services - Dependency Injection OSGi Style
Declarative Services - Dependency Injection OSGi StyleFelix Meschberger
 
Server-side OSGi with Apache Sling (OSGiDevCon 2011)
Server-side OSGi with Apache Sling (OSGiDevCon 2011)Server-side OSGi with Apache Sling (OSGiDevCon 2011)
Server-side OSGi with Apache Sling (OSGiDevCon 2011)Felix Meschberger
 
Modern operations with Apache Sling (2014 adaptTo version)
Modern operations with Apache Sling (2014 adaptTo version)Modern operations with Apache Sling (2014 adaptTo version)
Modern operations with Apache Sling (2014 adaptTo version)Bertrand Delacretaz
 
Of microservices and microservices
Of microservices and microservicesOf microservices and microservices
Of microservices and microservicesRobert Munteanu
 
RESTful Web Applications with Apache Sling
RESTful Web Applications with Apache SlingRESTful Web Applications with Apache Sling
RESTful Web Applications with Apache SlingBertrand Delacretaz
 
Apache Sling as a Microservices Gateway
Apache Sling as a Microservices GatewayApache Sling as a Microservices Gateway
Apache Sling as a Microservices GatewayRobert Munteanu
 

Destacado (20)

Rapid RESTful Web Applications with Apache Sling and Jackrabbit
Rapid RESTful Web Applications with Apache Sling and JackrabbitRapid RESTful Web Applications with Apache Sling and Jackrabbit
Rapid RESTful Web Applications with Apache Sling and Jackrabbit
 
Build Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache Sling
 
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
 
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
 
Deepak khetawat sling_models_sightly_jsp
Deepak khetawat sling_models_sightly_jspDeepak khetawat sling_models_sightly_jsp
Deepak khetawat sling_models_sightly_jsp
 
Apache Sling - The whys and the hows
Apache Sling - The whys and the howsApache Sling - The whys and the hows
Apache Sling - The whys and the hows
 
RESTful web apps with Apache Sling - 2013 version
RESTful web apps with Apache Sling - 2013 versionRESTful web apps with Apache Sling - 2013 version
RESTful web apps with Apache Sling - 2013 version
 
RESTFul development with Apache sling
RESTFul development with Apache slingRESTFul development with Apache sling
RESTFul development with Apache sling
 
Apache Sling as an OSGi-powered REST middleware
Apache Sling as an OSGi-powered REST middlewareApache Sling as an OSGi-powered REST middleware
Apache Sling as an OSGi-powered REST middleware
 
OSGi, Scripting and REST, Building Webapps With Apache Sling
OSGi, Scripting and REST, Building Webapps With Apache SlingOSGi, Scripting and REST, Building Webapps With Apache Sling
OSGi, Scripting and REST, Building Webapps With Apache Sling
 
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
 
Service oriented web development with OSGi
Service oriented web development with OSGiService oriented web development with OSGi
Service oriented web development with OSGi
 
Declarative Services - Dependency Injection OSGi Style
Declarative Services - Dependency Injection OSGi StyleDeclarative Services - Dependency Injection OSGi Style
Declarative Services - Dependency Injection OSGi Style
 
Reactive applications
Reactive applicationsReactive applications
Reactive applications
 
Server-side OSGi with Apache Sling (OSGiDevCon 2011)
Server-side OSGi with Apache Sling (OSGiDevCon 2011)Server-side OSGi with Apache Sling (OSGiDevCon 2011)
Server-side OSGi with Apache Sling (OSGiDevCon 2011)
 
Modern operations with Apache Sling (2014 adaptTo version)
Modern operations with Apache Sling (2014 adaptTo version)Modern operations with Apache Sling (2014 adaptTo version)
Modern operations with Apache Sling (2014 adaptTo version)
 
Of microservices and microservices
Of microservices and microservicesOf microservices and microservices
Of microservices and microservices
 
CQ5 and Sling overview
CQ5 and Sling overviewCQ5 and Sling overview
CQ5 and Sling overview
 
RESTful Web Applications with Apache Sling
RESTful Web Applications with Apache SlingRESTful Web Applications with Apache Sling
RESTful Web Applications with Apache Sling
 
Apache Sling as a Microservices Gateway
Apache Sling as a Microservices GatewayApache Sling as a Microservices Gateway
Apache Sling as a Microservices Gateway
 

Similar a Apache Sling : JCR, OSGi, Scripting and REST

Apache Con Us2007 Jcr In Action
Apache Con Us2007 Jcr In ActionApache Con Us2007 Jcr In Action
Apache Con Us2007 Jcr In Actionday
 
JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)Carsten Ziegeler
 
Cloud Scaling with Memcached
Cloud Scaling with MemcachedCloud Scaling with Memcached
Cloud Scaling with MemcachedGear6
 
Ruby Sapporo Night Vol2
Ruby Sapporo Night Vol2Ruby Sapporo Night Vol2
Ruby Sapporo Night Vol2Koji SHIMADA
 
. Net Training Institute in Noida/NCR
. Net Training Institute in Noida/NCR. Net Training Institute in Noida/NCR
. Net Training Institute in Noida/NCRTech Mentro
 
Evolution of a Memcached Deployment Webinar 2010 01 13
Evolution of a Memcached Deployment Webinar 2010 01 13Evolution of a Memcached Deployment Webinar 2010 01 13
Evolution of a Memcached Deployment Webinar 2010 01 13Gear6
 
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011Matt Raible
 
Lecture 13: Effective Presentations - Guest Lecture by Marie-Claude
Lecture 13: Effective Presentations - Guest Lecture by Marie-ClaudeLecture 13: Effective Presentations - Guest Lecture by Marie-Claude
Lecture 13: Effective Presentations - Guest Lecture by Marie-ClaudeJessica Laccetti
 
HTML5 with Play Scala, CoffeeScript and Jade - Jfokus 2012
HTML5 with Play Scala, CoffeeScript and Jade - Jfokus 2012HTML5 with Play Scala, CoffeeScript and Jade - Jfokus 2012
HTML5 with Play Scala, CoffeeScript and Jade - Jfokus 2012Matt Raible
 
Corporate Perl in Recruit, OpenSocial and Emoji‎ - YAPC::Asia 2009 Tokyo
Corporate Perl in Recruit, OpenSocial and Emoji‎ - YAPC::Asia 2009 TokyoCorporate Perl in Recruit, OpenSocial and Emoji‎ - YAPC::Asia 2009 Tokyo
Corporate Perl in Recruit, OpenSocial and Emoji‎ - YAPC::Asia 2009 TokyoYusuke Kawasaki
 
Decomposing Applications for Scalability and Deployability (April 2012)
Decomposing Applications for Scalability and Deployability (April 2012)Decomposing Applications for Scalability and Deployability (April 2012)
Decomposing Applications for Scalability and Deployability (April 2012)Chris Richardson
 
Web development with Lua: Introducing Sailor an MVC web framework @ CodingSer...
Web development with Lua: Introducing Sailor an MVC web framework @ CodingSer...Web development with Lua: Introducing Sailor an MVC web framework @ CodingSer...
Web development with Lua: Introducing Sailor an MVC web framework @ CodingSer...Etiene Dalcol
 
BNC Tech Forum 09: Lexcycle Stanza demo
BNC Tech Forum 09: Lexcycle Stanza demoBNC Tech Forum 09: Lexcycle Stanza demo
BNC Tech Forum 09: Lexcycle Stanza demoBookNet Canada
 
Zen and-the-art-of-build-script-maintenance-skillsmatter
Zen and-the-art-of-build-script-maintenance-skillsmatterZen and-the-art-of-build-script-maintenance-skillsmatter
Zen and-the-art-of-build-script-maintenance-skillsmatterSkills Matter
 
Lincs & notts business Networking presentation
Lincs & notts business Networking presentation Lincs & notts business Networking presentation
Lincs & notts business Networking presentation Malcolm York
 
Open APIs - getting stuff in and out
Open APIs - getting stuff in and outOpen APIs - getting stuff in and out
Open APIs - getting stuff in and outRichard Wallis
 
FinCap Solutions Brochure
FinCap  Solutions BrochureFinCap  Solutions Brochure
FinCap Solutions BrochureCFPuser
 
Asynchronous Javascript and Rich Internet Aplications
Asynchronous Javascript and Rich Internet AplicationsAsynchronous Javascript and Rich Internet Aplications
Asynchronous Javascript and Rich Internet AplicationsSubramanyan Murali
 

Similar a Apache Sling : JCR, OSGi, Scripting and REST (20)

Apache Con Us2007 Jcr In Action
Apache Con Us2007 Jcr In ActionApache Con Us2007 Jcr In Action
Apache Con Us2007 Jcr In Action
 
JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)
 
Integrating Rich Media with DITA
Integrating Rich Media with DITAIntegrating Rich Media with DITA
Integrating Rich Media with DITA
 
Nate tech deck
Nate tech deckNate tech deck
Nate tech deck
 
Cloud Scaling with Memcached
Cloud Scaling with MemcachedCloud Scaling with Memcached
Cloud Scaling with Memcached
 
Ruby Sapporo Night Vol2
Ruby Sapporo Night Vol2Ruby Sapporo Night Vol2
Ruby Sapporo Night Vol2
 
. Net Training Institute in Noida/NCR
. Net Training Institute in Noida/NCR. Net Training Institute in Noida/NCR
. Net Training Institute in Noida/NCR
 
Evolution of a Memcached Deployment Webinar 2010 01 13
Evolution of a Memcached Deployment Webinar 2010 01 13Evolution of a Memcached Deployment Webinar 2010 01 13
Evolution of a Memcached Deployment Webinar 2010 01 13
 
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
 
Lecture 13: Effective Presentations - Guest Lecture by Marie-Claude
Lecture 13: Effective Presentations - Guest Lecture by Marie-ClaudeLecture 13: Effective Presentations - Guest Lecture by Marie-Claude
Lecture 13: Effective Presentations - Guest Lecture by Marie-Claude
 
HTML5 with Play Scala, CoffeeScript and Jade - Jfokus 2012
HTML5 with Play Scala, CoffeeScript and Jade - Jfokus 2012HTML5 with Play Scala, CoffeeScript and Jade - Jfokus 2012
HTML5 with Play Scala, CoffeeScript and Jade - Jfokus 2012
 
Corporate Perl in Recruit, OpenSocial and Emoji‎ - YAPC::Asia 2009 Tokyo
Corporate Perl in Recruit, OpenSocial and Emoji‎ - YAPC::Asia 2009 TokyoCorporate Perl in Recruit, OpenSocial and Emoji‎ - YAPC::Asia 2009 Tokyo
Corporate Perl in Recruit, OpenSocial and Emoji‎ - YAPC::Asia 2009 Tokyo
 
Decomposing Applications for Scalability and Deployability (April 2012)
Decomposing Applications for Scalability and Deployability (April 2012)Decomposing Applications for Scalability and Deployability (April 2012)
Decomposing Applications for Scalability and Deployability (April 2012)
 
Web development with Lua: Introducing Sailor an MVC web framework @ CodingSer...
Web development with Lua: Introducing Sailor an MVC web framework @ CodingSer...Web development with Lua: Introducing Sailor an MVC web framework @ CodingSer...
Web development with Lua: Introducing Sailor an MVC web framework @ CodingSer...
 
BNC Tech Forum 09: Lexcycle Stanza demo
BNC Tech Forum 09: Lexcycle Stanza demoBNC Tech Forum 09: Lexcycle Stanza demo
BNC Tech Forum 09: Lexcycle Stanza demo
 
Zen and-the-art-of-build-script-maintenance-skillsmatter
Zen and-the-art-of-build-script-maintenance-skillsmatterZen and-the-art-of-build-script-maintenance-skillsmatter
Zen and-the-art-of-build-script-maintenance-skillsmatter
 
Lincs & notts business Networking presentation
Lincs & notts business Networking presentation Lincs & notts business Networking presentation
Lincs & notts business Networking presentation
 
Open APIs - getting stuff in and out
Open APIs - getting stuff in and outOpen APIs - getting stuff in and out
Open APIs - getting stuff in and out
 
FinCap Solutions Brochure
FinCap  Solutions BrochureFinCap  Solutions Brochure
FinCap Solutions Brochure
 
Asynchronous Javascript and Rich Internet Aplications
Asynchronous Javascript and Rich Internet AplicationsAsynchronous Javascript and Rich Internet Aplications
Asynchronous Javascript and Rich Internet Aplications
 

Más de Carsten Ziegeler

Use Case: Building OSGi Enterprise Applications (QCon 14)
Use Case: Building OSGi Enterprise Applications (QCon 14)Use Case: Building OSGi Enterprise Applications (QCon 14)
Use Case: Building OSGi Enterprise Applications (QCon 14)Carsten Ziegeler
 
What's cool in the new and updated OSGi Specs
What's cool in the new and updated OSGi SpecsWhat's cool in the new and updated OSGi Specs
What's cool in the new and updated OSGi SpecsCarsten Ziegeler
 
What's cool in the new and updated OSGi specs
What's cool in the new and updated OSGi specsWhat's cool in the new and updated OSGi specs
What's cool in the new and updated OSGi specsCarsten Ziegeler
 
Monitoring OSGi Applications with the Web Console
Monitoring OSGi Applications with the Web ConsoleMonitoring OSGi Applications with the Web Console
Monitoring OSGi Applications with the Web ConsoleCarsten Ziegeler
 
Distributed Eventing in OSGi
Distributed Eventing in OSGiDistributed Eventing in OSGi
Distributed Eventing in OSGiCarsten Ziegeler
 
Apache Sling - Distributed Eventing, Discovery, and Jobs (adaptTo 2013)
Apache Sling - Distributed Eventing, Discovery, and Jobs (adaptTo 2013)Apache Sling - Distributed Eventing, Discovery, and Jobs (adaptTo 2013)
Apache Sling - Distributed Eventing, Discovery, and Jobs (adaptTo 2013)Carsten Ziegeler
 
Adobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job ProcessingAdobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job ProcessingCarsten Ziegeler
 
JCR - Java Content Repositories
JCR - Java Content RepositoriesJCR - Java Content Repositories
JCR - Java Content RepositoriesCarsten Ziegeler
 
Embrace Change - Embrace OSGi
Embrace Change - Embrace OSGiEmbrace Change - Embrace OSGi
Embrace Change - Embrace OSGiCarsten Ziegeler
 
Apache Sanselan (ApacheCon US 2007 FFT)
Apache Sanselan (ApacheCon US 2007 FFT)Apache Sanselan (ApacheCon US 2007 FFT)
Apache Sanselan (ApacheCon US 2007 FFT)Carsten Ziegeler
 
Apache iBatis (ApacheCon US 2007)
Apache iBatis (ApacheCon US 2007)Apache iBatis (ApacheCon US 2007)
Apache iBatis (ApacheCon US 2007)Carsten Ziegeler
 
JCR In Action (ApacheCon US 2007)
JCR In Action (ApacheCon US 2007)JCR In Action (ApacheCon US 2007)
JCR In Action (ApacheCon US 2007)Carsten Ziegeler
 
Apache Portals Panel (ApacheCon US 2007)
Apache Portals Panel (ApacheCon US 2007)Apache Portals Panel (ApacheCon US 2007)
Apache Portals Panel (ApacheCon US 2007)Carsten Ziegeler
 
JCR In Action (ApacheCon EU 2008)
JCR In Action (ApacheCon EU 2008)JCR In Action (ApacheCon EU 2008)
JCR In Action (ApacheCon EU 2008)Carsten Ziegeler
 
Maven SCR Plugin (ApacheCon EU 2008 - FFT)
Maven SCR Plugin (ApacheCon EU 2008 - FFT)Maven SCR Plugin (ApacheCon EU 2008 - FFT)
Maven SCR Plugin (ApacheCon EU 2008 - FFT)Carsten Ziegeler
 

Más de Carsten Ziegeler (16)

Use Case: Building OSGi Enterprise Applications (QCon 14)
Use Case: Building OSGi Enterprise Applications (QCon 14)Use Case: Building OSGi Enterprise Applications (QCon 14)
Use Case: Building OSGi Enterprise Applications (QCon 14)
 
What's cool in the new and updated OSGi Specs
What's cool in the new and updated OSGi SpecsWhat's cool in the new and updated OSGi Specs
What's cool in the new and updated OSGi Specs
 
What's cool in the new and updated OSGi specs
What's cool in the new and updated OSGi specsWhat's cool in the new and updated OSGi specs
What's cool in the new and updated OSGi specs
 
Monitoring OSGi Applications with the Web Console
Monitoring OSGi Applications with the Web ConsoleMonitoring OSGi Applications with the Web Console
Monitoring OSGi Applications with the Web Console
 
Distributed Eventing in OSGi
Distributed Eventing in OSGiDistributed Eventing in OSGi
Distributed Eventing in OSGi
 
Apache Sling - Distributed Eventing, Discovery, and Jobs (adaptTo 2013)
Apache Sling - Distributed Eventing, Discovery, and Jobs (adaptTo 2013)Apache Sling - Distributed Eventing, Discovery, and Jobs (adaptTo 2013)
Apache Sling - Distributed Eventing, Discovery, and Jobs (adaptTo 2013)
 
Adobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job ProcessingAdobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job Processing
 
JCR - Java Content Repositories
JCR - Java Content RepositoriesJCR - Java Content Repositories
JCR - Java Content Repositories
 
Embrace Change - Embrace OSGi
Embrace Change - Embrace OSGiEmbrace Change - Embrace OSGi
Embrace Change - Embrace OSGi
 
Embrace OSGi
Embrace OSGiEmbrace OSGi
Embrace OSGi
 
Apache Sanselan (ApacheCon US 2007 FFT)
Apache Sanselan (ApacheCon US 2007 FFT)Apache Sanselan (ApacheCon US 2007 FFT)
Apache Sanselan (ApacheCon US 2007 FFT)
 
Apache iBatis (ApacheCon US 2007)
Apache iBatis (ApacheCon US 2007)Apache iBatis (ApacheCon US 2007)
Apache iBatis (ApacheCon US 2007)
 
JCR In Action (ApacheCon US 2007)
JCR In Action (ApacheCon US 2007)JCR In Action (ApacheCon US 2007)
JCR In Action (ApacheCon US 2007)
 
Apache Portals Panel (ApacheCon US 2007)
Apache Portals Panel (ApacheCon US 2007)Apache Portals Panel (ApacheCon US 2007)
Apache Portals Panel (ApacheCon US 2007)
 
JCR In Action (ApacheCon EU 2008)
JCR In Action (ApacheCon EU 2008)JCR In Action (ApacheCon EU 2008)
JCR In Action (ApacheCon EU 2008)
 
Maven SCR Plugin (ApacheCon EU 2008 - FFT)
Maven SCR Plugin (ApacheCon EU 2008 - FFT)Maven SCR Plugin (ApacheCon EU 2008 - FFT)
Maven SCR Plugin (ApacheCon EU 2008 - FFT)
 

Último

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
 
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
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
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
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
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
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 

Último (20)

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
 
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
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
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
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
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
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
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
 

Apache Sling : JCR, OSGi, Scripting and REST

  • 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
  • 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
  • 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
  • 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=quot;<%= current %>quot; addSelectors=quot;treequot;/> … 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
  • 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