O'Reilly logo

Die OSGi Service Platform: Eine Einführung mit Eclipse Equinox by Matthias Lübken, Bernd Kolb, Nils Hartmann, Gerd Wütherich

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

14 Der Metatype Service252
14.2 Überblick über den Metatype Service
Metatype Service
Der Metatype Service stellt eine einheitliche Schnittstelle r den
Zugriff auf Metatyp-Informationen zur Verfügung, die mit einem
Bundle assoziiert sind. Prinzipiell können Sie über den Metatype Ser-
vice Metatyp-Information für beliebige Entitäten bereitstellen. Prak-
tisch relevant ist der Metatype Service jedoch insbesondere im Zusam-
menhang mit dem Config Admin Service.
Metatype und
Config Admin Service
Mithilfe des Metatype Service können Sie Metatyp-Informationen
für die Konfigurationen eines Managed Service oder einer Managed
Service Factory bereitstellen. Auf Basis dieser Metatyp-Informationen
können Management Agents, die eine grafische Benutzungsschnitt-
stelle bereitstellen, dynamisch Masken zum Anlegen und Ändern die-
ser Konfigurationen erzeugen.
Object-Class- und
Attribute-Definition
Die Beschreibung von Metatyp-Informationen erfolgt über sog.
Object-Class-Definitionen. Eine Object-Class-Definition wiederum
gruppiert eine oder mehrere Attribute-Definitionen, die fachlich oder
technisch zusammengehören. Im Kontext des Config Admin Service
werden bspw. die Konfigurations-Metatyp-Informationen zu einem
Managed Service (oder einer Managed Service Factory) in einer
Object-Class-Definition zusammengefasst. Die enthaltenen Attribute-
Definitionen beschreiben dann die möglichen Properties der Konfigu-
ration.
In einer Attribute-Definition beschreiben Sie das Attribut, dessen
Typ sowie ggf. einen möglichen Wertebereich. Außerdem können Sie
in einer Attribute-Definition die Optionalität und ggf. einen Default-
wert des Attributs angeben.
Abb. 14–4
Zuammenspiel von
Metatype und
Config Admin Service
OSGi Framework
Management
Bundle
Management
Agent
Config Admin
Service
Managed
Service
(Factory)
Co
S
e
Ma
A
g
M
ana
g
ement
MetaType
Service
25314.3 Beschreibung von Metatyp-Informationen in XML
Beschreibung von
Metatyp-Informationen
Die Spezifikation sieht zwei Wege vor, mit denen zu einem Bundle
gehörende Metatyp-Informationen angegeben werden können (vgl.
Abb. 14–5).
Verwendung von Metatyp-Ressourcen: Zum einen können Sie
innerhalb eines Bundles Metatyp-Informationen in Form einer
oder mehrere XML-Dateien (sog. Metatyp-Ressourcen) bereitstel-
len. Diese XML-Dateien müssen sich im Verzeichnis
OSGI-
INF/metatype
befinden und enthalten die in XML beschriebenen
Metatyp-Informationen sowie die PIDs der Managed Services bzw.
Managed Service Factories, denen Metatyp-Beschreibung zugeord-
net werden soll. Wir werden diesen Ansatz in Unterkapitel 14.3
detailliert vorstellen.
Implementierung eigener MetaTypeProvider: Alternativ kann ein
Managed Service bzw eine Managed Service Factory das Interface
MetaTypeProvider implementieren. Wenn der Metatype Service
keine XML-Beschreibung für einen Managed Service bzw. eine
Managed Service Factory findet, dann versucht er, r diesen Ser-
vice Metatyp-Informationen über das ggf. implementierte Interface
MetaTypeProvider zu erhalten.
In Abb. 15–5 sind die möglichen Quellen für Metatyp-Definitionen
dargestellt.
14.3 Beschreibung von Metatyp-Informationen in XML
Für die Beschreibung der Metatyp-Informationen eines Bundles ver-
wenden Sie eine oder mehrere XML-Dateien, deren Schema in der
Spezifikation des Metatype Service definiert ist. Damit der Metatype
Service diese Dateien findet, müssen Sie die Dateien in das
OSGI-
INF/metatype
-Verzeichnis Ihres Bundles legen.
Abb. 14–5
Quellen für Metatyp-
Definitionen
MetaType
Service
ManagedService,
MetaTypeProvider
ManagedServiceFactory,
MetaTypeProvider
OSGI-INF/metatype
Ressource
G
I-INF
/
metat
yp
14 Der Metatype Service254
Alle XML-Dateien, die sich in diesem Verzeichnis befinden, werden
vom Metatype Service ausgelesen und verarbeitet.
Das Root-Element einer Metatype-XML-Ressource ist das Element
metadata, für das Sie einen Namespace angeben müssen:
<metatype:MetaData
xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.0.0">
[...]
</metatype:MetaData>
14.3.1 Object-Class- und Attribute-Definitionen
Object-Class-Definitionen
In der XML-Datei werden Object-Class-Definitionen durch das Ele-
ment
OCD und Attribute-Definitionen durch das Element AD dargestellt.
Schauen wir uns zunächst das
OCD-Element an, mit dem Sie eine Object-
Class definieren. Das Element kennt die folgenden drei Attribute:
Falls Sie wie im Tutorial zu diesem Kapitel die Knopflerfish-Implementie-
rung des Metatype Service benutzen, dann müssen alle Dateien, die im
OSGI-
INF/metatype
-Verzeichnis liegen, gültige Metatype-XML-Dateien sein. Wenn
Sie in Eclipse ein Plug-in-Projekt direkt aus der IDE heraus installieren, müs-
sen Sie daher darauf achten, dass sich in Ihrem
metatype-Verzeichnis keine
Verzeichnisse Ihres Versionierungstools (z.B.
.svn) befinden.
META-INF
MANIFEST.MF
org.osgibook.translation.internal
TranslationService,
ManagedService
OSGI-INF
metatype
metatype.xml
Abb. 14–6
Verwendung von
Metatype-
XML-Ressourcen
Achtung
Name Optional Beschreibung
id nein Eine systemweit eindeutige ID
name nein Ein menschenlesbarer Name
description ja Eine menschenlesbare Beschreibung
Tab. 14–1
XML-Attribute
des OCD-Elementes
25514.3 Beschreibung von Metatyp-Informationen in XML
Beispiel
Im Tutorial zu diesem Kapitel haben wir die Metatype-Informationen
der Translation-Service-Konfiguration über folgendes
OCD-Element
definiert:
<?xml version="1.0" encoding="UTF-8"?>
<metatype:MetaData
xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.0.0">
<OCD id="org.osgibook.translation.TranslationService"
name="Translation-Service-Konfiguration"
description="Die Konfiguration des Translation Service">
[...]
</OCD>
[...]
</metatype:MetaData>
Attribute-Definition
Das OCD-Element enthält eine Liste mit den Attributbeschreibungen in
Form von
AD-Elementen. Ein AD-Element verfügt über die folgenden
XML-Attribute:
Beispiel
Im Tutorial zu diesem Kapitel haben wir die Metatype-Informationen
der Translation-Service-Konfiguration über folgendes
AD-Element defi-
niert:
<?xml version="1.0" encoding="UTF-8"?>
<metatype:MetaData
xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.0.0">
Name Optional Beschreibung
id nein Eine systemweit eindeutige ID
name nein Ein sprechender Name
type nein Der Java-Typ des Attributes (String, Long, Integer,
Char, Byte, Double, Float, Short und Boolean)
description ja Eine Beschreibung der Attributs
default ja Der Defaultwert
min ja Die Untergrenze für numerische Werte
max ja Die Obergrenze für numerische Werte
cardinality ja Die Anzahl der Elemente, die in diesem Attribut ge-
speichert werden kann. Positive Zahlen beschreiben
ein Array, negative Zahlen beschreiben einen Vector.
required ja Die Optionalität des Attributs
Tab. 14–2
XML-Attribute
des AD-Elementes
14 Der Metatype Service256
<OCD id="org.osgibook.translation.TranslationService"
name="Translation-Service-Konfiguration"
description="Die Konfiguration des Translation Service">
<AD id="translation.language"
type="String"
default="de"
name="Sprache"
description="Der Sprach-Code"/>
<AD id="translation.country"
type="String"
default="DE"
name="Land"
description="Der Laender-Code"/>
</OCD>
[...]
</metatype:MetaData>
Wertemengen
von Attributen
Um für die Belegung eines Attributs nur vordefinierte Werte zuzulas-
sen, nnen Sie über
Option-Elemente eine Liste mit Werten hinterle-
gen, die dieses Attribut annehmen darf andere Werte sind dann für
das Attribut ungültig.
Option-Elemente müssen als Unterelemente des
AD-Elements verwendet werden und verfügen über zwei Attribute
(vgl. Tabelle 14–3).
Mit folgendem XML-Fragment definieren Sie bspw. für das Sprach-
Attribut, dass nur die Werte »de« und »eangenommen werden n-
nen:
<AD id="translation.language"
type="String"
default="de"
name="Sprache"
description="Der Sprach-Code">
<Option label="Deutsch" value="de" />
<Option label="Englisch" value="en" />
</AD>
Name Optional Beschreibung
label nein Label für die Anzeige des Wertes
value nein Der eigentliche Wert
Tab. 14–3
XML-Attribute
des Option-Elementes

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required