Konfiguration von OSGi-Anwendungen
1Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Anwendungenmit dem Configuration Admin Service
Agenda
� Konfiguration
� Konfiguration und OSGi� Konfiguration und OSGi
� Konfiguration und Declarative Services
� Konfiguration und Spring Dynamic Modules
2Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Wo sind wir ?
� Konfiguration
� Konfiguration und OSGi� Konfiguration und OSGi
� Konfiguration und Declarative Services
� Konfiguration und Spring Dynamic Modules
3Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Was verstehen wir unter Konfiguration?
� Setzen von Parametern, die Umfang, Aussehen, Verhalten und Ergebnisse einer Software beeinflussen. beeinflussen.
Zitat (http://de.wikipedia.org)
� Eingriff in die Wirkungsweise eines Systems� Veränderung zur Laufzeit - jederzeit
4
� Veränderung zur Laufzeit - jederzeit� notwendig zur Administration
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Beispiele aus dem Leben
� Konfiguration mittels JVM Optionen
� Konfiguration mittels Properties-Datei� Konfiguration mittels Properties-Datei� wird mittels Classloading oder Zugriff
aus Filesystem bereitgestellt� pro Komponente eine Properties-Datei
� Konfiguration mittels META-INF/Services� vgl. JAXP (SAXFactory, Dom Factory, ...)
5
� vgl. JAXP (SAXFactory, Dom Factory, ...)
� keine Administration möglich
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Wo sind wir ?
� Konfiguration
� Konfiguration und OSGi� Konfiguration und OSGi� OSGi Keywords� Config Admin Service � Managed Service Factories� Security� Deklarative Konfiguration - Metatype Service
6
� Deklarative Konfiguration - Metatype Service
� Konfiguration und Declarative Services
� Konfiguration und Spring Dynamic Modules
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
OSGi Keywords
? Service Registry
registriert
a.b.c.MyService
prop1=value1
Service-Nutzer
servicebundle
beans
7Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
bundle
kennt
Konfiguration in OSGi
� Wie sind Konfigurationen und Services gekoppelt?
� grundlegende Mechanismen� Wie wird Lifecycle von Services unterstützt?� Wie gelangen Konfigurationen zu Services?
� Wie werden Konfigurationen beschrieben?� programmatisch und deklarativ
8
� programmatisch und deklarativ
� Auswirkung von Konfigurationsänderungen zur Laufzeit
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Wo sind wir ?
� Konfiguration
� Konfiguration und OSGi� Konfiguration und OSGi� OSGi Keywords� Config Admin Service� Managed Service Factories� Security � Deklarative Konfiguration - Metatype Service
9
� Deklarative Konfiguration - Metatype Service
� Konfiguration und Declarative Services
� Konfiguration und Spring Dynamic Modules
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Konfiguration in OSGi
trackingService Registry
registriert
VermittlerConfig Admin Service
name value
Managed Service
pid=a.b.c
PID
10Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
name value
size 42
shape circle
color green
bundle
kennt
PID
a.b.c
Konfigurationsszenarien I
Config Admin Service
3 updated(Dictionary)
Managed Service
in separatem Thread
2configurations
PID Properties
a.b.c size=42
register service event1
pid=a.b.c
register
11Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Service Registry
Konfigurationsszenarien II
Config Admin Service
2 updated(Dictionary)
Managed Service
configurations
Config Admin Service
PID Properties
a.b.c size=421 get managed services
Managed Service
pid=a.b.c
register
12Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Service Registry
Config Admin Service
Konfigurationsszenarien III
5 updated(Dictionary)
2 updated(null)
Managed Service
configurations
Config Admin Service
PID Properties
5 updated(Dictionary)
PID Properties
a.b.c size=42 3
4
1
register service event
Managed Service
pid=a.b.c
register
13Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Service Registry
4get managed services
Wo sind wir ?
trackingService Registry
registriert
VermittlerConfig Admin Service Managed Service
pid=a.b.c
PIDname value
14Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
bundle
kennt
PID
a.b.c
name value
size 42
shape circle
color green
Configuration Object (I)
� Konfigurationsinformationen
� heißen Configuration Object� heißen Configuration Object� werden als java.util.Dictionary repräsentiert� bestehen aus Primitiven- und Java-Simple Typen� .... oder Arrays oder Vektoren davon
15Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Configuration Object (II)
� verwaltet einen Satz Konfigurationsinformationen
� wird programmatisch erzeugt� wird programmatisch erzeugt
� siehe Config Admin Service
� wird deklarativ erzeugt
� siehe Metatype Service
16Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Wo sind wir ?
trackingService Registry
registriert
name value
VermittlerConfig Admin Service Managed Service
pid=a.b.c
PID
17Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
name value
size 42
shape circle
color green
bundle
kennt
PID
a.b.c
PID (Persistent Identity)
� identifiziert ein Configuration Object
� identifiziert Managed Services� identifiziert Managed Services
� verbindet alle Beteiligten in einem Konfigurationsszenario
� ist eindeutig für alle Managed Services� maximal ein Configuration Object pro PID� maximal ein Managed Service pro PID
18
� maximal ein Managed Service pro PID� durch Spezifikation eingefordert
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Wo sind wir ?
trackingService Registry
registriert
PIDname value
VermittlerConfig Admin Service Managed Service
pid=a.b.c
19Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
PID
a.b.c
name value
size 42
shape circle
color green
bundle
kennt
Managed Services
� sind OSGi Services, die sich auf Konfigurationen beziehen
� konsumieren Konfigurationen des Config Admin Service
� implementieren das IF Managed Service� Methoden für Configuration Lifecycle
� referenzieren die Konfiguration mittels PID
20
� referenzieren die Konfiguration mittels PID� PID ist Service Property
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Wo sind wir ?
trackingService Registry
registriert
PIDname value
VermittlerManaged Service
pid=a.b.c
Config Admin Service
21Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
PID
a.b.c
name value
size 42
shape circle
color green
bundle
kennt
Config Admin Service
� ist ein Service der OSGi Spec
� verwaltet Configuration Objects� anlegen, löschen, verändern, finden� bietet Programmierschnittstelle für diese Aufgaben
� verwaltet Bezug zwischen Configuration Objectsund Managed Services� stellt initialen Bezug her
22
� stellt initialen Bezug her� kontrolliert die Auswirkung des Lebenszyklus
von Configuration Objects
� persistiert Configuration Objects
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Wo sind wir ?
� Konfiguration
� Konfiguration und OSGi� Konfiguration und OSGi� OSGi Keywords� Config Admin Service � Managed Service Factories� Security � Deklarative Konfiguration - Metatype Service
23
� Deklarative Konfiguration - Metatype Service
� Konfiguration und Declarative Services
� Konfiguration und Spring Dynamic Modules
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Managed Service Factory - Ausgangsszenario
� Ein Service wird mehrfach mit jeweils eigener Konfiguration instanziert
� Alle Konfigurationen sind gleichartig � werden gleichartig verarbeitet
24Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Managed Service Factories
trackingService Registry
registriert
VermittlerConfig Admin Service
factory pid=a.b.c
Managed Service Factory
name valuename value factory
25Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
bundle
kennt
name value
size 42shape circle
color green
name value
size 19
shape square
color blue
factory PID
a.b.c
Wo sind wir ?
trackingService Registry
registriert
VermittlerConfig Admin Service
Registry
factory pid=a.b.c
Managed Service Factory
26Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
bundle
kennt
name value
size 42shape circle
color green
name value
size 19
shape square
color blue
factory PID
a.b.c
Factory Configuration
� Factory Configuration� enthalten mehrere gleichartige Configuration Objects� enthalten mehrere gleichartige Configuration Objects� werden durch eine factory PID identifiziert
� Config Admin Service unterstützt� Factory Configurations� Generierung einer PID pro Configuration
27Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
registriert
Wo sind wir ?
trackingService Registry
VermittlerConfig Admin Service
Registry
factory pid=a.b.c
Managed Service Factory
28Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
name value
size 42shape circle
color green
name value
size 19
shape square
color blue
factory PID
a.b.c
bundle
kennt
Managed Service Factory
� Managed Service Factory� referenziert eine Factory Configuration� referenziert eine Factory Configuration
� factory PID
� ist Adressat aller Configuration Objects einer Factory Configuration
� erwartet eigene PID pro Configuration Object� updated(String(PID), Dictionary)
29Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Wo sind wir ?
� Konfiguration
� Konfiguration und OSGi� Konfiguration und OSGi� OSGi Keywords� Config Admin Service� Managed Service Factories� Security� Deklarative Konfiguration - Metatype Service
30Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
� Deklarative Konfiguration - Metatype Service
� Konfiguration und Declarative Services
� Konfiguration und Spring Dynamic Modules
Security
� Configuration Objects sind � an ein Bundle gebunden� an ein Bundle gebunden
- i.d.R. an das erzeugende Bundle
� Bundles haben keine Möglichkeit, die Konfiguration anderer Bundles zu manipulieren
31Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Config Admin Service – Essentials
� Configuration Objects� Singleton Configuration
� durch PID identifiziert
� Factory Configuration� durch factory PID identifiziert
� Adressat ist Managed Service [Factory]
� können programmatisch erzeugt werden
32
� IF des Config Admin Service
� können deklarativ erzeugt werden� mit Hilfe des Metatype Service
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Wo sind wir ?
� Konfiguration
� Konfiguration und OSGi� Konfiguration und OSGi� OSGi Keywords� Config Admin Service � Managed Service Factories� Security� Deklarative Konfiguration - Metatype Service
33
� Deklarative Konfiguration - Metatype Service
� Konfiguration und Declarative Services
� Konfiguration und Spring Dynamic Modules
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Deklarative Konfiguration - Erwartungshaltung
� Definition der Konfigurationsdaten� (key,value) – Pairs� einfache Typen für Werte� einfache Typen für Werte� multiple einfache Typen als Array oder Vector
� Konfigurationsdatei� XML
� Verbindung zu PID / factory PID
34
� Beschreibung der Meta-Daten � Name, Typ, Kardinalitäten usw. zu Attributen� unterstützt Erfassung von Konfigurationen
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Metatype Resource I
<?xml version="1.0" encoding="UTF-8"?><MetaData xmlns=... />
Attribute Definition
Object Class Definition
IdentifiziertIdentifiziert<MetaData xmlns=... /><OCD name="person" ����
id="2.5.6.6" description="..."><AD name="sn" id="2.5.4.4" type="String"/><AD name="cn" id="2.5.4.3" type="String"/><AD name="seeAlso" id="2.5.4.34" ����
type="String"����cardinality="3" ����
35Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
cardinality="3" ����</OCD>
Metatype Resource II
<Designate pid="com.acme.addressbook"><Object ocdref="2.5.6.6"/>
Zuordnung zwischen Object Definition und PID
Referenz via IDReferenz via ID
<Object ocdref="2.5.6.6"/><Attribute adref="2.5.4.4" content="X"/><Attribute adref="2.5.4.34">
<Value>[email protected]</Value> <Value>[email protected]</Value><Value>[email protected]</Value>
</Attribute>
36Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
</Designate></MetaData>
Konfiguration in OSGi
trackingService Registry
registriert
VermittlerConfig Admin Service Managed Service
pid=a.b.c
Registry
bundle
37Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
name value
size 42
shape circle
color green
kennt
PID
a.b.c
bundle
<<XML>>
Metatype Resource
Metatype Service
� deklarative Beschreibung� in XML Ressource (sogen. Meta Type Resource)� liegen in OSGI-INF/Metatype eines Bundles � werden durch Metatype Service extrahiert
� auch fragments werden untersucht
� programmatische Beschreibung � durch Implementierung der IF MetaTypeProvider
38
� durch Implementierung der IF MetaTypeProvider� optional für Managed Service [Factories]
� werden durch Config Admin Service ausgewertet
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Essentials - Metatype Service
� Metatype Resource� erlauben Deklaration von Konfigurationen � erlauben Deklaration von Konfigurationen
� Metadaten sind Basis für Adminstrations-konsolen� WebConsole, Knopflerfish Desktop
39Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Agenda
� Konfiguration
� Konfiguration und OSGi� Konfiguration und OSGi
� Konfiguration und Declarative Services� Declarative Services� Configuration Objects und und Component
Configurations
� Konfiguration und Spring Dynamic Modules
40
� Konfiguration und Spring Dynamic Modules � Managed Properties� Managed Service Factories
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Component Configuration
� beschreibt Komponentenmodell für OSGi
� definiert Vertrag zwischen Services� definiert Vertrag zwischen Services
� definiert Vertrag zwischen Service und Framework
� ist Bestandteil des OSGi Service Compendiums
� wird durch Component Description deklariert
41
� XML
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Service Component Runtime
Declarative Services
<<XML>>Component
Service Component
Component Component }ComponentDescription
Component Properties
Component Configuration
Component ConfigurationComponent
ConfigurationComponent
Configuration}Service
Configuration Objects
42Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
kennt/erzeugt
Service Registry
Configuration Objects mittels
Config Admin Service
Wo sind wir ?
<<XML>>Component
Service Component
} Component Component ComponentDescription
Component Configuration}
Service
Component ConfigurationComponent
ConfigurationComponent
Configuration
Configuration Objects
Component Properties
43Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
kennt/erzeugt
Service Registry
Configuration Objects mittels
Config Admin Service
Component Configuration
� bezieht sich auf Configuration Object� mit PID gleich component.name� führt zu neuen Component Properties� ergänzt die Konfiguration der Komponente
� Filterkriterien zur Referenz von Services
� Bei Aktualisierung des Configuration Object� wird die entsprechende Component Configuration
deaktiviert
44
� wird die entsprechende Component Configurationdeaktiviert
� anschließend reaktiviert� Reaktivierung berücksichtigt neue Konfigurationssituation
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Essentials - Declarative Services
� Lifecycle der Component Configurations sind an den der Configuration Objects gekoppelt
� ganzer Mechanismus der OSGi Konfiguration steht zur Verfügung
� Eigenschaften von Komponenten � Abhängigkeiten zwischen Komponenten/Services
45Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Wo sind wir ?
� Konfiguration
� Konfiguration und OSGi� Konfiguration und OSGi
� Konfiguration und Declarative Services
� Konfiguration und Spring Dynamic Modules � Managed Properties� Managed Service Factories
46Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Spring DM (Dynamic Modules)
� Spring DM wird OSGi Standard in 4.2� RFC 124
� erweitert Spring� erweitert Spring� Application Context umfasst OSGi Kontext� dynamischer Service-Support� Integrationstests in OSGi
� ist (weiteres) Komponentenmodell für OSGi
47
� definiert Vertrag zwischen Services� definiert Vertrag zwischen Service und Framework� definiert Vertrag zwischen Bean und Service
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Wo sind wir ?
� Konfiguration
� Konfiguration und OSGi� Konfiguration und OSGi
� Konfiguration und Declarative Services
� Konfiguration und Spring Dynamic Modules � Managed Properties� Managed Service Factories
48Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Spring DM - Managed Properties
<bean id="managedComponent" class="MessageTank"><osgix:managed-properties����
persistent-id="com.xyz.messageservice"/>
Bean wird überConfig Admin Service
konfiguriert
PID
persistent-id="com.xyz.messageservice"/>
</bean>
public class MessageTank {private int amount;
<property name="amount" value="100"/>
{49Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
private int amount;public int getAmount() {return this.amount; }public void setAmount(int amount)����
{ this.amount = amount; }}
{
Spring DM – Aktualisierung der Konfiguration
� Änderung der Configuration Objects� werden implizit nach Erzeugung der Beans ignoriert� werden implizit nach Erzeugung der Beans ignoriert
� explizite Strategien sind auszuwählen
� container-managed� setter der zu aktualisierenden Bean-Properties
� bean-managed� update-method, die bei Aktualisierung aufgerufen wird
50
� update-method, die bei Aktualisierung aufgerufen wird
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Wo sind wir ?
� Konfiguration
� Konfiguration und OSGi� Konfiguration und OSGi
� Konfiguration und Declarative Services
� Konfiguration und Spring Dynamic Modules � Managed Properties� Managed Service Factories
51Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Spring DM – Managed Service Factories
<osgix:managed-service-factory id="data-msf"����factory-pid="org.xyz.labX" ����update-strategy="bean-managed" ����update-method="refresh">
factory PID
update strategy {update-method="refresh">
<osgix:interfaces><value>java.util.Queue</value>
</osgix:interfaces>
<bean class="com.xyz.ResizableQueue"><property name="size" value="100"/><property name="fair" value="false"/>
update strategy {service interface}
}
52Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
<property name="fair" value="false"/></bean>
</osgix:managed-service-factory>
Service Implementierung
}
Essentials - Spring DM
� Spring DM und Config Admin Serviceintegrieren sich harmonisch� Integration ist konsistent und erwartungstreu� Erweiterungen sind folgerichtig
� Spring DM koppelt Services an Configuration Objects� vgl. Declarative Services
53
� vgl. Declarative Services
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Essentials - Konfiguration in OSGi
� bietet jederzeitigen Eingriff in Wirkungsweise
� setzt stringent auf OSGi Mechanismen� setzt stringent auf OSGi Mechanismen
� unterstützt Singleton- und Factory Configurations
� koppelt Services und Configuration Objects � Erweiterung von Komponentmodellen
� Declarative Services und Spring DM
54Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Bibliographie / Links
� OSGi Spec 4.1 / 4.2 Preview
� http://www.osgi.org/download/osgi-4.2-early-draft.pdfdraft.pdf
� OSGi Service Platform (Wütherich)
� http://www.dpunkt.de/buecher/2635.html
� OSGi in Practice (Neil Barlett) – Free!
� http://neilbartlett.name/blog/osgibook/
55
� Modular Java: Creating Flexible Applications withOSGi and Spring (Craig Walls)
� http://www.pragprog.com/titles/cwosg/modular-java
Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
Weitere Fragen?
www.iks-gmbh.com
56Christoph Schmidt-Casdorff, Thorsten Vogel - iks GmbH
[email protected]@iks-gmbh.com