Server-side OSGi with Apache Sling Felix Meschberger Day - - PowerPoint PPT Presentation

server side osgi with apache sling
SMART_READER_LITE
LIVE PREVIEW

Server-side OSGi with Apache Sling Felix Meschberger Day - - PowerPoint PPT Presentation

Server-side OSGi with Apache Sling Felix Meschberger Day Management AG 124 About Felix Meschberger > Senior Developer, Day Management AG > fmeschbe@day.com > http://blog.meschberger.ch > VP Apache Sling > Apache


slide-1
SLIDE 1



Server-side OSGi with Apache Sling

Felix Meschberger Day Management AG 124

slide-2
SLIDE 2

2



About Felix Meschberger

> Senior Developer, Day Management AG > fmeschbe@day.com > http://blog.meschberger.ch > VP Apache Sling > Apache Felix > Apache Jackrabbit

slide-3
SLIDE 3

3



Agenda

> Apache Sling > Why OSGi ? > What parts of OSGi ? > Advantages and Problems > Demo

slide-4
SLIDE 4

4



Apache Sling

> REST based web framework > Content-driven (JCR, JSR-170/283) > Powered by OSGi > Scripting inside (Java Scripting, JSR-223) > Apache Open Source Projekt (http://sling.apache.org)

slide-5
SLIDE 5

5



Sling Architecture

OSGi Framework

Felix Web Console WebDAV Server browser filesystem debugger HTTP JSR-170/283 API

JCR repository

resource resolution servlet resolution standard servlets custom servlets JSR223 Scripting

JSP javascript etc.

slide-6
SLIDE 6

6



Sling URL Decomposition

/content/cars/audi/s4.details.html

slide-7
SLIDE 7

7



Sling is RESTful

> URLs map to Resources – Items in the JCR Repository – Files in the Filesystem – Content of Bundles > HTTP Methods map to Script Names – e.g. cars/POST.jsp – GET for reading only – Dilution: POST allowed for any changes (Create, Update, Delete) > Content Negotiation – Request URL extension – Accept request header currently ignored

slide-8
SLIDE 8

8



Sling is Object Oriented Web

> Resources are the Object > Resources maintained in Resource Tree > Resources accessed by path in the Resource Tree > Request Method, Extension and Selectors define „Method“ to call > Resources are typed: – Resource Type – Resource Super Type – „Root Type“: sling/servlet/default

slide-9
SLIDE 9

9



Functionality Out-Of-the-Box

> Default Implementations for GET – Plain Text – JSON – XML > Default Implementation for POST – Create, Update, Modify content – Extensible

slide-10
SLIDE 10

10



Sling in Action

> Day Communiqué 5 (http://www.day.com/cq5) > Sakai 3 (http://www.sakaiproject.org) > Tuberculosis Project > Idium Web (http://www.idium.no/no/idium_web) http://cwiki.apache.org/SLING/who-is-using-sling-.html

slide-11
SLIDE 11

11



Agenda

> Apache Sling > Why OSGi ? > What parts of OSGi ? > Advantages and Problems > Demo

slide-12
SLIDE 12

12



Requirements for Sling

> Modular and Extensible System > Declared Dependencies > Intermodule Communication > Lightweight Framework

slide-13
SLIDE 13

13



Variants

> Do It Yourself – Well, don't we have other problems to solve ? ;-) > Spring (before Spring DM) – First Favourite due to declarative nature – Systems not really dynamic – Static application descriptor > OSGi – Perfect match to all requirements

slide-14
SLIDE 14

14



Agenda

> Apache Sling > Why OSGi ? > What parts of OSGi ? > Advantages and Problems > Demo

slide-15
SLIDE 15

15



OSGi Elements Used

> Framework > Configuration Admin Service > Meta Type Service > Declarative Services > Event Admin Service > Log Service > HTTP Service

slide-16
SLIDE 16

16



Launching Sling

> Standalone or Web Application > Small Footprint Launcher (~30K) > Framework in its own ClassLoader > Restart of Framework > Update of Framework > Application is Container Agnostic – Interaction only within the OSGi Framework – Http Service implementation is the key

slide-17
SLIDE 17

17



Configuration Admin Service

> Provides an API to manage Configurations > Provides functionality to pass configuration to consumers > Hides persistance problems > Uses in Sling – Web Console configuraition editor – JCR Install updates through repository

slide-18
SLIDE 18

18



Metatype Service

> Descriptor to generate GUI for Configuration Management > Use in Sling – Descriptor generated by Maven SCR Plugin – Configuration Admin GUI in Web Console supports Metatype Service descriptors

slide-19
SLIDE 19

19



Declarative Services

> Replace boiler-plate code by descriptors – Service Registration – Configuration support – Service Access > Dependency Injection > One of many OSGi Core Extensions: – Apache Felix Dependency Manager (Predecessor) – Apache Felix iPOJO (Successor) – Blueprint (OSGi Compendium Specification R 4.2) – Peaberry

slide-20
SLIDE 20

20



Event Admin Service

> Whiteboard Pattern oriented eventing > Support for synchronous and asynchronous events > Uses in Sling – Base Mechnism to implement Job Scheduling – Extended to allow for event distribution in Cluster

slide-21
SLIDE 21

21



Log Service

> Sling's own implementation > Based on SLF4J API > Provides – OSGi LogService – SLF4J Logging – Commons Logging – Log4F Logging > Dynamically Configurable (by Configuration Admin Service) > Log Levels and Log Format per Logger > Multiple Log Files with size and time rotation

slide-22
SLIDE 22

22



Http Service

> Registering Servlets (and Resources) dynamically > Real Implementation – Includes Servlet Container > Bridged Implementation – Used for Web Application Launcher – Bridges Servlet Container to OSGi > Implementation transparent to registered Servlets

slide-23
SLIDE 23

23



Extensions

> Apache Felix Web Console – Extensible Web Based Management – Jquery UI Based (as of Version 3.0) > Maven SCR Plugin – Generates

Declarative Services Descriptors

Metatype Service Descriptors

– Supports

JavaDoc Tags (@scr.component, etc.)

Java 5 Annotations (@Component, etc.)

> JCR Install – Deploy Bundles via JCR Repository – Deploy Configuration Admin configurations via JCR Repository

slide-24
SLIDE 24

24



Agenda

> Apache Sling > Why OSGi ? > What parts of OSGi ? > Advantages and Problems > Demo

slide-25
SLIDE 25

25



Advantages

> Declared Dependencies > Better Isolution through explicit exports and private classes > Classloader Isolation > Extensibility built-in, not built-atop > Dynamism

slide-26
SLIDE 26

26



Problems

> Steep Learning Curve – OSGi Specifications Themselves – Modularization vs. Monolithic > Uptime vs. Startup Time > Legacy Specs und ClassLoader – JDBC, XML, etc. > Scripting und ClassLoader – BundleClassLoaderProxy approach > Application Packaging – CRX Content Packages (Day proprietary) – Karaf features (Sling provides feature.xml)

slide-27
SLIDE 27

27



Agenda

> Apache Sling > Why OSGi ? > What parts of OSGi ? > Advantages and Problems > Demo

slide-28
SLIDE 28

28



Demo: 15 Minutes

> Commandline launch > Web Console > Show WebDAV > Dummy Content > Create Scripts and have it render – ESP – Groovy – JSP

slide-29
SLIDE 29

29



Links

> Apache Sling – The JCR (Web) Application Framework http://sling.apache.org > Apache Felix – OSGi Framework and Compendium Service implementations http://felix.apache.org > Apache Jackrabbit – The JCR (JSR-170/283) Reference Implementation http://jackrabbit.apache.org > Day Developer's Home http://dev.day.com

slide-30
SLIDE 30

30



Questions

slide-31
SLIDE 31

31



Thank you very much !

slide-32
SLIDE 32



Felix Meschberger http://www.day.com Day Management AG fmeschbe@day.com