SlideShare a Scribd company logo
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

Recommended for you

12 tips on Django Best Practices
12 tips on Django Best Practices12 tips on Django Best Practices
12 tips on Django Best Practices

The document provides 12 tips on Django best practices for development, deployment, and external tools. The tips include using virtualenv for isolated environments, managing dependencies with pip and requirements.txt, following a model-template-view framework, keeping views thin and logic in models/forms, and leveraging tools like Fabric, South, Celery, Redis, Sentry, and the Django debug toolbar. The document emphasizes following the Django philosophy and reusing existing apps when possible.

djangoappspip
Tuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxTuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptx

Flink Forward San Francisco 2022. In normal situations, the default Kafka consumer and producer configuration options work well. But we all know life is not all roses and rainbows and in this session we’ll explore a few knobs that can save the day in atypical scenarios. First, we'll take a detailed look at the parameters available when reading from Kafka. We’ll inspect the params helping us to spot quickly an application lock or crash, the ones that can significantly improve the performance and the ones to touch with gloves since they could cause more harm than benefit. Moreover we’ll explore the partitioning options and discuss when diverging from the default strategy is needed. Next, we’ll discuss the Kafka Sink. After browsing the available options we'll then dive deep into understanding how to approach use cases like sinking enormous records, managing spikes, and handling small but frequent updates.. If you want to understand how to make your application survive when the sky is dark, this session is for you! by Olena Babenko

stream processingbig dataapache flink
Java logging
Java loggingJava logging
Java logging

A conceptula model for understanding Java logging frameworks presented at the South Africa Oracle Java Developer Conference, May 2012

java
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

Recommended for you

LLAP: Building Cloud First BI
LLAP: Building Cloud First BILLAP: Building Cloud First BI
LLAP: Building Cloud First BI

LLAP (Live Long and Process) is the newest query acceleration engine for Hive 2.0, which entered GA in 2017. LLAP brings into light a new set of trade-offs and optimizations that allows for efficient and secure multi-user BI systems on the cloud. In this talk, we discuss the specifics of building a modern BI engine within those boundaries, designed to be fast and cost-effective on the public cloud. The focus of the LLAP cache is to speed up common BI query patterns on the cloud, while avoiding most of the operational administration overheads of maintaining a caching layer, with an automatically coherent cache with intelligent eviction and support for custom file formats from text to ORC, and explore the possibilities of combining the cache with a transactional storage layer which supports online UPDATE and DELETES without full data reloads. LLAP by itself, as a relational data layer, extends the same caching and security advantages to any other data processing framework. We overview the structure of such a hybrid system, where both Hive and Spark use LLAP to provide SQL query acceleration on the cloud with new, improved concurrent query support and production-ready tools and UI. Speaker Sergey Shelukin, Member of Technical Staff, Hortonworks

hortonworksbusiness intelligencellap
MongoDB Days Silicon Valley: Using MongoDB with Adobe AEM Communities
MongoDB Days Silicon Valley: Using MongoDB with Adobe AEM CommunitiesMongoDB Days Silicon Valley: Using MongoDB with Adobe AEM Communities
MongoDB Days Silicon Valley: Using MongoDB with Adobe AEM Communities

Presented by Kevin Nennig, AEM Technical Instructor, Adobe Experience level: Introductory In Adobe Experience Manager 6.1, a new approach has been taken for user generated content (UGC) for better security, higher availability, and ease of use for community members and administrators. The Social Resource Provider API for AEM Communities can be implemented 3 different ways to create a UGC cloud, two of which use a MongoDB backend. Utilizing MongoDB, companies can implement an on prem UGC common store with a Mongo and a Solr server. UCG is then stored and accessed from this UGC cloud. In this session we’ll explore the Social Resource Provider framework and implement the Mongo Social Resource Provider (MSRP) for AEM Communities.

mongodb daysmongodb
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep Dive

Learn the best practices and advanced techniques. * Passing data to client libs, use the data attribute * Expression contexts, choose wisely * Use statement best practices, what fits best your needs * Template & Call statements advanced usage * Parameters for sub-resources, featuring resource attributes and synthetic resources

aem 6.2adobe experience managersightly
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

Recommended for you

Replacing Your Shared Drive with Alfresco - Open Source ECM
Replacing Your Shared Drive with Alfresco - Open Source ECMReplacing Your Shared Drive with Alfresco - Open Source ECM
Replacing Your Shared Drive with Alfresco - Open Source ECM

1) Alfresco replaces traditional shared drives with a virtual file system that provides better document management capabilities than a standard file system, including search, version control, metadata, and collaboration tools. 2) It utilizes a rules engine and smart spaces to automate processes like metadata extraction and workflow. Rules can be created to organize, structure, and enrich content. 3) Alfresco provides a virtual file system via several protocols like CIFS, WebDAV, and FTP to emulate a shared drive and allow dragging and dropping of files while also enabling server-side actions.

collaboratecontentcollaboration
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction

This document discusses Spring Boot, an open source framework for building microservices and web applications. It provides scaffolding to help build Spring-based services more quickly. The author chose Spring Boot for a project because it integrates well with other frameworks like Jersey and allows building services quickly. Key Spring Boot components discussed include REST frameworks, embedded servers, logging frameworks, security, and metrics. The author outlines their Spring Boot stack and package structure. They discuss using Spring Data for persistence, Swagger for API documentation, and helper libraries like Lombok. The document also covers testing approaches using REST Assured and Spring Integration.

software developmentjava
Top java script frameworks ppt
Top java script frameworks pptTop java script frameworks ppt
Top java script frameworks ppt

1. The document discusses several popular JavaScript frameworks including AngularJS, Node.js, Agility.js, and Backbone.js. It provides overviews of each framework and their architectures. 2. AngularJS is an open-source framework maintained by Google that assists with single-page applications. Node.js is a platform for scalable server-side applications. Agility.js is a lightweight MVC library, and Backbone.js helps organize code for single-page apps. 3. Each framework has advantages like reusability, testability and being lightweight, though some have disadvantages like learning curves or added complexity. The document provides examples of applications that use each framework.

web application developmentjavascript arraysjavascript frameworks
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

Recommended for you

Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
Performance Tuning -  Memory leaks, Thread deadlocks, JDK toolsPerformance Tuning -  Memory leaks, Thread deadlocks, JDK tools
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools

How to identify memory leaks in java applications, thread contentions, using jdk in built tools to identify performance bottlenecks

optimizationperformance tuningmonitoring
Maven
MavenMaven
Maven

The document discusses using Maven for automation builds. It covers quick starting a Maven project, the Maven lifecycle and phases, dependency and plugin management, and integrating Maven with IDEs like Eclipse. Key points include how to create a basic Maven project, the different Maven directories, common Maven commands, using the Surefire plugin to run tests, and configuring test dependencies.

React Hooks
React HooksReact Hooks
React Hooks

React Hooks are functions that allow you to "hook into" React state and lifecycle features from function components. Some key hooks include useState, useContext, and useEffect. Hooks make it easier to reuse stateful logic between components and simplify component logic. However, hooks should only be called from React functions and not in loops, conditions, or nested functions. Overall, hooks provide more powerful features to function components and opportunities to write code in a more functional style.

reacthooksmeetup
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

Recommended for you

The Play Framework at LinkedIn
The Play Framework at LinkedInThe Play Framework at LinkedIn
The Play Framework at LinkedIn

Video of the presentation: http://www.youtube.com/watch?v=8z3h4Uv9YbE At LinkedIn, we have started to use the Play Framework to build front-end and back-end services at massive scale. Play does things a little differently: it's a Java and Scala web framework, but it doesn't follow the servlet spec; it's fairly new, but it runs on top of robust technologies like Akka and Netty; it uses a thread pool, but it's built for non-blocking I/O and reactive programming; most importantly, it's high performance, but also high productivity. We've found that the Play Framework is one of the few frameworks that is able to maintain the delicate balance of performance, reliability, and developer productivity. In the Java and Scala world, nothing even comes close. In this talk, I'll share what we've learned so far, including details of rapid iteration with Java and Scala, the story behind async I/O on the JVM, support for real time web apps (comet, WebSockets), and integrating Play into a large existing codebase.

play frameworkweb developmentjava
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.

This presentation: * covers basics of caching and popular cache types * explains evolution from simple cache to distributed, and from distributed to IMDG * not describes usage of NoSQL solutions for caching * is not intended for products comparison or for promotion of Hazelcast as the best solution

replicated cachecachingin-memory data grid
JVM Performance Tuning
JVM Performance TuningJVM Performance Tuning
JVM Performance Tuning

An opinionated position on JVM performance tuning with practical application. Includes expertise from Jason Goth

jvmjavaperformance
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

Recommended for you

RESTful API 설계
RESTful API 설계RESTful API 설계
RESTful API 설계

10번째 DevMeetup 발표. DevMeetup은 Yello Finance Group내의 개발자 문화증진을 위한 행사.

restful apiapi blueprintswagger
Introduction to memcached
Introduction to memcachedIntroduction to memcached
Introduction to memcached

Introduction to memcached, a caching service designed for optimizing performance and scaling in the web stack, seen from perspective of MySQL/PHP users. Given for 2nd year students of professional bachelor in ICT at Kaho St. Lieven, Gent.

phpmysqlikdoeict
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

This is the presentation from JavaOne 2011 that Ruben Reusser and I worked on. The presentation was heavily demonstration based, so there are not as many slides.

slingrestjava
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

Recommended for you

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

Apache Sling is an innovative web framework built on top of the Java Content Repository (JCR), that uses OSGi for its component model and fosters RESTful application design. This talk shows how Sling integrates various standard-based technologies, like OSGi and the Content Repository API for Java to create a coherent framework for web application development. We will walk through the development of a simple application with minimal effort and demonstrate how to productize the resulting application. We will pay special attention to some approaches which are not yet part of mainstream development, such as using OSGi for dependecy injection and JCR for persistence.

sling apache apachecon osgi jcr
Rest and Sling Resolution
Rest and Sling ResolutionRest and Sling Resolution
Rest and Sling Resolution

Sling is a RESTful web application framework that uses JCR repositories like Apache Jackrabbit as its data store. Sling maps HTTP requests to content resources in the repository and uses the resource type to locate the appropriate rendering script. The request URL is decomposed into the resource path, selectors, extension, and suffix path. Sling searches for a node matching the resource path and then locates a script based on the resource type and any selectors. Sling scripts cannot be called directly and must be resolved through the resource to follow REST principles. This document discusses how Sling maps URLs to content resources and scripts to process requests.

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

This document discusses an overview of Apache Sling, including quick facts about its history and community, its conceptual foundations as a REST-based and content-driven framework powered by OSGi and scripting, its main building blocks like resource providers and JCR, and how to build Sling applications by modeling content in JCR, accessing resources, using templating with Sightly, extensions, deployment and tooling.

slingapacheconosgi
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

Recommended for you

Deepak khetawat sling_models_sightly_jsp
Deepak khetawat sling_models_sightly_jspDeepak khetawat sling_models_sightly_jsp
Deepak khetawat sling_models_sightly_jsp

Sling Models allow for dependency injection and adaptation of Sling objects into POJOs using annotations. This document discusses how Sling Models work, the annotations used to configure them, standard injectors, and how to use Sling Models with Sightly and JSP. It also provides a live demo and references for further information.

jspsightlyslingmodels
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

This document provides an overview and introduction to the Apache Sling framework. It discusses why Sling was created, its architecture built on OSGi, JCR, and REST standards, and how it provides a content-centric approach. Key benefits of Sling include its modular design, support for multiple programming languages, and use by major companies for applications like digital asset management and wikis.

slingjcrjackrabbit
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

The document describes Apache Sling, an OSGi-based application framework for building RESTful web applications on top of a content repository. It uses Apache Sling to build a sample coffee shop ordering application called Slingbucks. The application is built with only a few hundred lines of Java code and uses content to define things like coffee options and styles rather than hardcoding them. Apache Sling promotes the principle that "everything is content" and enables building full-featured applications with relatively little code by leveraging out-of-the-box HTTP services and the ability to extend functionality through OSGi plugins.

slingjcrjackrabbit
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

Recommended for you

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

Apache Sling is an innovative web framework built on top of the Java Content Repository (JCR), that uses OSGi for its component model and fosters RESTful application design. This presentation will showcase how the Apache Sling framework can be used to build a unified REST-based middleware for multiple data sources, such as MongoDB, Apache Cassandra, Apache Jackrabbit Oak or classical relational databases. In doing so it will present the benefits that come from a single Resource API over multiple data stores, both at the library level and at the HTTP boundary.

devoxxmongosling
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

Apache Jackrabbit is just about to reach the 3.0 milestone based on a new architecture called Oak. Based on concepts like eventual consistency and multi-version concurrency control, and borrowing ideas from distributed version control systems and cloud-scale databases, the Oak architecture is a major leap ahead for Jackrabbit. This presentation describes the Oak architecture and shows what it means for the scalability and performance of modern content applications. Changes to existing Jackrabbit functionality are described and the migration process is explained.

oakjackrabbitapache
Service oriented web development with OSGi
Service oriented web development with OSGiService oriented web development with OSGi
Service oriented web development with OSGi

Introduction into service oriented web development using OSGi, includes latest Declarative Services (DS) and the Http Whiteboard Specification.

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

Recommended for you

Declarative Services - Dependency Injection OSGi Style
Declarative Services - Dependency Injection OSGi StyleDeclarative Services - Dependency Injection OSGi Style
Declarative Services - Dependency Injection OSGi Style

This talk presents the simple yet powerful way of dependency injection as defined by the OSGi Compendium Declarative Services specification. Besides covering the basics of Declarative Services this talk also explains the many useful additions of the Declarative Services 1.1 in OSGi R 4.2.

declarative servicesdependency injectionosgi
Reactive applications
Reactive applicationsReactive applications
Reactive applications

A short introduction to reactive applications. This document details different traits of reactive applications and some of the languages that help implement them.

nodejsevent drivenreactive 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)

Apache Sling is an innovative REST based Web Framework which has been developped from the ground up as an OSGi based server side application. After a short introduction to Sling itself I will also show why OSGi has been chosen as the basis for the application.

slingdeclarative serviceapache sling
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

Recommended for you

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)

The document discusses using Apache Sling for modern operations. It describes using Docker and Fig to set up a cluster of stateless and elastic Sling instances that can scale. While Sling works well with some modern operations approaches, dynamic service discovery and handling eventual consistency between instances need more work. The full potential of Sling for modern operations can be unlocked with further testing and development.

etcddockersling
Of microservices and microservices
Of microservices and microservicesOf microservices and microservices
Of microservices and microservices

Microservices are definitely the hot topic du jour . Everyone ( and their dog ) is using microservices or migrating towards them. To make things more interesting, the OSGi community has been talking about microservices for 6 years now, so now we have two clashing definitions of the term. Besides the dreaded monolith and the famed microservices-based architecture there is plenty of room for a middle ground, where an API gateway mediates between a host of microservices and their consumers. Such a gateway solves multiple cross-cutting concerns, such as authentication, API standardisation, logging and decoupling the API evolution. As it turns out, OSGi is an ideal setting for building such an application. The API gateway implementation demoed is based on Apache Sling - an innovative web framework built on top of the Java Content Repository (JCR), that uses OSGi for its component model and fosters RESTful application design. Although we will use Apache Sling for examples, previous knowledge of Sling or its components is not required.

slingmicroservicesmonolith
CQ5 and Sling overview
CQ5 and Sling overviewCQ5 and Sling overview
CQ5 and Sling overview

CQ5 and Sling provide an overview of content management systems and frameworks. CQ5 is a content management system built on Apache Sling, which is an applications framework for JCR content repositories based on OSGi. Sling allows for dynamic modules and services and fosters modular code. Together, CQ5 and Sling provide a flexible and powerful way to manage content on a website through a content-centric approach where everything is treated as content.

sling apachesling daysoftware cq5 osgi felix jackr
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

Recommended for you

RESTful Web Applications with Apache Sling
RESTful Web Applications with Apache SlingRESTful Web Applications with Apache Sling
RESTful Web Applications with Apache Sling

Sling is a RESTful web framework for building applications on top of Apache Jackrabbit. It allows resources like content, configurations, code, and binaries to be accessed over REST URLs. Sling maps URLs to resources rather than commands, supports various scripting languages as servlets, and has a modular OSGi-based architecture powered by Apache Felix. Examples shown include building a blog and coffee ordering application on Sling to demonstrate how it supports RESTful content creation and management.

slingjcrapache
Apache Sling as a Microservices Gateway
Apache Sling as a Microservices GatewayApache Sling as a Microservices Gateway
Apache Sling as a Microservices Gateway

Apache Sling as a Microservices Gateway --- Microservices are definitely the hot topic _du jour_ . Everyone ( and their dog ) is using microservices or migrating towards them. However, there is a gap between the enthusiam for microservices and the ability to create and maintain the infrastructure and culture to effectively use microservices. Apache Sling is an innovative web framework built on top of the Java Content Repository (JCR), that uses OSGi for its component model and fosters RESTful application design. And, as we will see, it is also perfect match for a microservices gateway. In this talk we will review the pros and cons of microservices and monoliths, and look for middle road that smaller organisations that follow to use services productively. One of the approaches we will outline and demo is an API gateway built on top of Apache Sling, used to adress the cross-cutting concerns that would otherwise be reimplemented by all microservices.

slingmicroservicesmonolith
Aem maintenance
Aem maintenanceAem maintenance
Aem maintenance

The document discusses key maintenance activities for an AEM implementation including backup, compaction, purging, cloning, and other approaches. It provides details on planning and executing online and offline backups, online and offline compaction, version purging, workflow purging, audit log purging, and cloning publish instances. The document emphasizes the importance of backups, compaction, and purging to optimize storage usage, improve performance, and maintain an optimal AEM instance.

compcationmaintenancepurging
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

Recommended for you

Sling Models Overview
Sling Models OverviewSling Models Overview
Sling Models Overview

This document discusses Sling Models, which provide a simplified way to adapt Sling resources and other objects into domain models. Key points: - Sling Models use annotations to inject properties from resources and other sources into POJOs rather than requiring custom adapter factories. - Common annotations include @Model, @Inject, @Optional, @Source, and @Filter to customize property injection. - Sling Models are included in AEM and their usage has simplified adapting resources from over 30 lines of code to just 13 lines. - The API supports extensions like custom injectors, annotations, and future additions like grandchild resource lists.

javaaemcq5
Apache Con Us2007 Jcr In Action
Apache Con Us2007 Jcr In ActionApache Con Us2007 Jcr In Action
Apache Con Us2007 Jcr In Action

This document discusses content management using Apache Jackrabbit, a Java Content Repository implementation. It provides an agenda for the discussion, including an overview of JCR and Jackrabbit, content modeling techniques, using references and search features, and a sample music application to demonstrate JCR capabilities. The document concludes with opening the discussion to questions.

 
by day
JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)

My presentation about JCR and Apache Jackrabbit from the ApacheCon US 2009, November, in Oakland, CA.

apache jcr jackrabbit jsr-170 jsr-283
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

Recommended for you

Integrating Rich Media with DITA
Integrating Rich Media with DITAIntegrating Rich Media with DITA
Integrating Rich Media with DITA

This document discusses integrating rich media like video into technical documentation generated from DITA. It describes using the <object> element in DITA to embed Flash video but notes problems with this approach. It then introduces the SwfObject and playlist methods as better solutions. SwfObject uses JavaScript to embed Flash without breaking validation, and playlists allow centralized media management and metadata.

mediavideoswfobject
Nate tech deck
Nate tech deckNate tech deck
Nate tech deck

Corona SDK is a software development kit that allows developers to code mobile apps faster using the Lua programming language. Lua is an industry standard scripting language that is simple yet powerful. Corona allows developers to write their code once and deploy their apps to multiple mobile app stores.

ioscorona sdkandroid
Cloud Scaling with Memcached
Cloud Scaling with MemcachedCloud Scaling with Memcached
Cloud Scaling with Memcached

This document summarizes a presentation about Memcached and using the cloud. It discusses how Memcached alleviates database load for dynamic web applications by caching objects in memory. Using the cloud allows sites to leverage elastic, on-demand resources and pay only for what they use. The document recommends designing systems to be loosely coupled and resilient to failures when using the cloud. It presents two use cases - a system entirely in the cloud using Memcached and EC2 instances, and a hybrid model with an on-premise Memcached cache. Gear6 is introduced as a commercial distribution of Memcached optimized for use in the cloud.

cloud-scalescale-outmemcached
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

Recommended for you

Ruby Sapporo Night Vol2
Ruby Sapporo Night Vol2Ruby Sapporo Night Vol2
Ruby Sapporo Night Vol2

This document is about Ruby on Rails. It introduces RubySapporo and provides information about Ruby and Rails. Key points discussed include how Rails uses conventions over configuration, Don't Repeat Yourself principles, the MVC framework, and components like ActiveRecord and controllers. Links are provided to resources about Ruby, Rails, and an upcoming Sapporo workshop.

. Net Training Institute in Noida/NCR
. Net Training Institute in Noida/NCR. Net Training Institute in Noida/NCR
. Net Training Institute in Noida/NCR

The document outlines a 6-month curriculum for project-based training in .NET and related technologies. It covers topics such as introduction to .NET, C#, object-oriented programming, databases, ADO.NET, ASP.NET, web services, and JavaScript. It also includes advanced topics like remoting, reflection, assembly and deployment, and specialized topics like WPF, WCF, and WF. The curriculum aims to provide hands-on experience through a culminating live project.

. net training institutedot net institute.net project training in noida
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

Memcached has become a critical tool in the web technology stack. High traffic web sites with dynamic content - like Facebook, Twitter, and Wikipedia - rely on Memcached to scale and ensure “snappy” site performance. This presentation willl cover a brief overview of Memcached, then dive into the evolution of Memcached’s use in dynamic web sites and how you can scale your site and get better performance with Memcached. We’ll also review emerging architectures and tools of high performance, large scale dynamic websites. In this webinar you will learn best practices used by some of the hottest sites and get tips on how to avoid potential pitfalls when scaling. Whether you're just building the infrastructure for a brand new site or have a large dynamic site with millions of users, this webinar is for you.

gear6memcached
61



     Thanks for your attention!



               Q&A

More Related Content

What's hot

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
Bob Paulin
 
Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)
Kris Mok
 
Spring boot
Spring bootSpring boot
Spring boot
Bhagwat Kumar
 
12 tips on Django Best Practices
12 tips on Django Best Practices12 tips on Django Best Practices
12 tips on Django Best Practices
David Arcos
 
Tuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxTuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptx
Flink Forward
 
Java logging
Java loggingJava logging
Java logging
Jumping Bean
 
LLAP: Building Cloud First BI
LLAP: Building Cloud First BILLAP: Building Cloud First BI
LLAP: Building Cloud First BI
DataWorks Summit
 
MongoDB Days Silicon Valley: Using MongoDB with Adobe AEM Communities
MongoDB Days Silicon Valley: Using MongoDB with Adobe AEM CommunitiesMongoDB Days Silicon Valley: Using MongoDB with Adobe AEM Communities
MongoDB Days Silicon Valley: Using MongoDB with Adobe AEM Communities
MongoDB
 
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep Dive
Gabriel Walt
 
Replacing Your Shared Drive with Alfresco - Open Source ECM
Replacing Your Shared Drive with Alfresco - Open Source ECMReplacing Your Shared Drive with Alfresco - Open Source ECM
Replacing Your Shared Drive with Alfresco - Open Source ECM
Alfresco Software
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
Jonathan Holloway
 
Top java script frameworks ppt
Top java script frameworks pptTop java script frameworks ppt
Top java script frameworks ppt
Omkarsoft Bangalore
 
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
Performance Tuning -  Memory leaks, Thread deadlocks, JDK toolsPerformance Tuning -  Memory leaks, Thread deadlocks, JDK tools
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
Haribabu Nandyal Padmanaban
 
Maven
MavenMaven
React Hooks
React HooksReact Hooks
React Hooks
Joao Marins
 
The Play Framework at LinkedIn
The Play Framework at LinkedInThe Play Framework at LinkedIn
The Play Framework at LinkedIn
Yevgeniy Brikman
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
Taras Matyashovsky
 
JVM Performance Tuning
JVM Performance TuningJVM Performance Tuning
JVM Performance Tuning
Jeremy Leisy
 
RESTful API 설계
RESTful API 설계RESTful API 설계
RESTful API 설계
Jinho Yoo
 
Introduction to memcached
Introduction to memcachedIntroduction to memcached
Introduction to memcached
Jurriaan Persyn
 

What's hot (20)

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
 
Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)
 
Spring boot
Spring bootSpring boot
Spring boot
 
12 tips on Django Best Practices
12 tips on Django Best Practices12 tips on Django Best Practices
12 tips on Django Best Practices
 
Tuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxTuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptx
 
Java logging
Java loggingJava logging
Java logging
 
LLAP: Building Cloud First BI
LLAP: Building Cloud First BILLAP: Building Cloud First BI
LLAP: Building Cloud First BI
 
MongoDB Days Silicon Valley: Using MongoDB with Adobe AEM Communities
MongoDB Days Silicon Valley: Using MongoDB with Adobe AEM CommunitiesMongoDB Days Silicon Valley: Using MongoDB with Adobe AEM Communities
MongoDB Days Silicon Valley: Using MongoDB with Adobe AEM Communities
 
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep Dive
 
Replacing Your Shared Drive with Alfresco - Open Source ECM
Replacing Your Shared Drive with Alfresco - Open Source ECMReplacing Your Shared Drive with Alfresco - Open Source ECM
Replacing Your Shared Drive with Alfresco - Open Source ECM
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
 
Top java script frameworks ppt
Top java script frameworks pptTop java script frameworks ppt
Top java script frameworks ppt
 
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
Performance Tuning -  Memory leaks, Thread deadlocks, JDK toolsPerformance Tuning -  Memory leaks, Thread deadlocks, JDK tools
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
 
Maven
MavenMaven
Maven
 
React Hooks
React HooksReact Hooks
React Hooks
 
The Play Framework at LinkedIn
The Play Framework at LinkedInThe Play Framework at LinkedIn
The Play Framework at LinkedIn
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
 
JVM Performance Tuning
JVM Performance TuningJVM Performance Tuning
JVM Performance Tuning
 
RESTful API 설계
RESTful API 설계RESTful API 설계
RESTful API 설계
 
Introduction to memcached
Introduction to memcachedIntroduction to memcached
Introduction to memcached
 

Viewers also liked

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
Craig Dickson
 
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
Robert Munteanu
 
Rest and Sling Resolution
Rest and Sling ResolutionRest and Sling Resolution
Rest and Sling Resolution
DEEPAK KHETAWAT
 
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
Robert Munteanu
 
Deepak khetawat sling_models_sightly_jsp
Deepak khetawat sling_models_sightly_jspDeepak khetawat sling_models_sightly_jsp
Deepak khetawat sling_models_sightly_jsp
DEEPAK 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 hows
Robert 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 version
Bertrand Delacretaz
 
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
Robert Munteanu
 
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
Jukka Zitting
 
Service oriented web development with OSGi
Service oriented web development with OSGiService oriented web development with OSGi
Service oriented web development with OSGi
Carsten Ziegeler
 
Declarative Services - Dependency Injection OSGi Style
Declarative Services - Dependency Injection OSGi StyleDeclarative Services - Dependency Injection OSGi Style
Declarative Services - Dependency Injection OSGi Style
Felix Meschberger
 
Reactive applications
Reactive applicationsReactive applications
Reactive applications
Ashokkumar T A
 
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 microservices
Robert Munteanu
 
CQ5 and Sling overview
CQ5 and Sling overviewCQ5 and Sling overview
CQ5 and Sling overview
Bertrand Delacretaz
 
RESTful Web Applications with Apache Sling
RESTful Web Applications with Apache SlingRESTful Web Applications with Apache Sling
RESTful Web Applications with Apache Sling
Bertrand Delacretaz
 
Apache Sling as a Microservices Gateway
Apache Sling as a Microservices GatewayApache Sling as a Microservices Gateway
Apache Sling as a Microservices Gateway
Robert Munteanu
 
Aem maintenance
Aem maintenanceAem maintenance
Aem maintenance
Ashokkumar T A
 
Sling Models Overview
Sling Models OverviewSling Models Overview
Sling Models Overview
Justin Edelson
 

Viewers also liked (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
 
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
 
Rest and Sling Resolution
Rest and Sling ResolutionRest and Sling Resolution
Rest and Sling Resolution
 
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
 
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
 
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
 
Aem maintenance
Aem maintenanceAem maintenance
Aem maintenance
 
Sling Models Overview
Sling Models OverviewSling Models Overview
Sling Models Overview
 

Similar to 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 Action
day
 
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
 
Integrating Rich Media with DITA
Integrating Rich Media with DITAIntegrating Rich Media with DITA
Integrating Rich Media with DITA
Healy Consulting Services
 
Nate tech deck
Nate tech deckNate tech deck
Nate tech deck
FullyCroisened
 
Cloud Scaling with Memcached
Cloud Scaling with MemcachedCloud Scaling with Memcached
Cloud Scaling with Memcached
Gear6
 
Ruby Sapporo Night Vol2
Ruby Sapporo Night Vol2Ruby Sapporo Night Vol2
Ruby Sapporo Night Vol2
Koji SHIMADA
 
. Net Training Institute in Noida/NCR
. Net Training Institute in Noida/NCR. Net Training Institute in Noida/NCR
. Net Training Institute in Noida/NCR
Tech 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 13
Gear6
 
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
Matt 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-Claude
Jessica 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 2012
Matt 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 Tokyo
Yusuke 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 demo
BookNet 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-skillsmatter
Skills 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 out
Richard Wallis
 
FinCap Solutions Brochure
FinCap  Solutions BrochureFinCap  Solutions Brochure
FinCap Solutions Brochure
CFPuser
 
Asynchronous Javascript and Rich Internet Aplications
Asynchronous Javascript and Rich Internet AplicationsAsynchronous Javascript and Rich Internet Aplications
Asynchronous Javascript and Rich Internet Aplications
Subramanyan Murali
 

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

More from 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 Specs
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 specs
Carsten 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 Console
Carsten Ziegeler
 
Distributed Eventing in OSGi
Distributed Eventing in OSGiDistributed Eventing in OSGi
Distributed Eventing in OSGi
Carsten 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 Processing
Carsten Ziegeler
 
JCR - Java Content Repositories
JCR - Java Content RepositoriesJCR - Java Content Repositories
JCR - Java Content Repositories
Carsten Ziegeler
 
Embrace Change - Embrace OSGi
Embrace Change - Embrace OSGiEmbrace Change - Embrace OSGi
Embrace Change - Embrace OSGi
Carsten Ziegeler
 
Embrace OSGi
Embrace OSGiEmbrace OSGi
Embrace OSGi
Carsten 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
 

More from 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)
 

Recently uploaded

Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
Mark Billinghurst
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
Sally Laouacheria
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
Emerging Tech
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
Safe Software
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Chris Swan
 
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Mydbops
 
find out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challengesfind out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challenges
huseindihon
 
Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024
BookNet Canada
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
ArgaBisma
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
Matthew Sinclair
 
Password Rotation in 2024 is still Relevant
Password Rotation in 2024 is still RelevantPassword Rotation in 2024 is still Relevant
Password Rotation in 2024 is still Relevant
Bert Blevins
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
Vijayananda Mohire
 
Cookies program to display the information though cookie creation
Cookies program to display the information though cookie creationCookies program to display the information though cookie creation
Cookies program to display the information though cookie creation
shanthidl1
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
Matthew Sinclair
 
Manual | Product | Research Presentation
Manual | Product | Research PresentationManual | Product | Research Presentation
Manual | Product | Research Presentation
welrejdoall
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
Liveplex
 
Best Programming Language for Civil Engineers
Best Programming Language for Civil EngineersBest Programming Language for Civil Engineers
Best Programming Language for Civil Engineers
Awais Yaseen
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
Adam Dunkels
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
Stephanie Beckett
 

Recently uploaded (20)

Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
 
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
 
find out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challengesfind out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challenges
 
Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
 
Password Rotation in 2024 is still Relevant
Password Rotation in 2024 is still RelevantPassword Rotation in 2024 is still Relevant
Password Rotation in 2024 is still Relevant
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
 
Cookies program to display the information though cookie creation
Cookies program to display the information though cookie creationCookies program to display the information though cookie creation
Cookies program to display the information though cookie creation
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
 
Manual | Product | Research Presentation
Manual | Product | Research PresentationManual | Product | Research Presentation
Manual | Product | Research Presentation
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
 
Best Programming Language for Civil Engineers
Best Programming Language for Civil EngineersBest Programming Language for Civil Engineers
Best Programming Language for Civil Engineers
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
 

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