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

247
14 Der Metatype Service
Motivation
Im Tutorial des vorherigen Kapitels haben wir Ihnen gezeigt, wie Sie
mit dem Config Admin Service Bundles und Services zur Laufzeit kon-
figurieren nnen. Dafür haben wir ein
configure-Kommando für die
Equinox-Konsole entwickelt, mit dem Konfigurationen über die Kom-
mandozeile setzen können.
Bei Verwendung von grafischen Management Agents erfolgt die
Bearbeitung von Konfigurationen über grafisch-interaktive Editoren.
Damit ein Management Agent einen solchen Editor bereitstellen kann,
muss er die Möglichkeit haben, eine Beschreibung der Konfiguration,
also z.B. deren Name und Typ, zu ermitteln. Dies kann mithilfe des
Metatype Service erfolgen, den wir Ihnen in diesem Kapitel vorstellen.
Der Metatype Service ermöglicht die Spezifikation von Metadaten zu
Konfigurationen. Ein Management Agent kann mit diesen Angaben
bspw. ein Formular bereitstellen, über das ein Anwender die Konfigu-
ration eines Service administrieren kann.
Einordnung
Der Metatype Service ist Bestandteil des OSGi Service Compen-
dium und der OSGi Mobile Specification, er ist in beiden Dokumenten
im Kapitel 105 »Metatype Service Specification« beschrieben. Häufig
wird der Service in Zusammenhang mit dem Configuration Admin
Service eingesetzt, den wir Ihnen in Kapitel 13 vorgestellt haben.
14.1 Tutorial: Den Translation Service konfigurieren
Übersicht
In diesem Tutorial erweitern wir das Beispiel aus Kapitel 13 um eine
Metatyp-Beschreibung, anhand derer ein grafischer Management
Agent entsprechende Eingabemasken bereitstellen kann. Folgende
Änderungen werden wir vornehmen (vgl. Abb. 14–1):
Bereitstellung der Metatyp-Information: Im Bundle
org.osgibook.
translation.impl
spezifizieren wir die Metatyp-Informationen für
die Konfiguration des Translation Service in Form eines XML-
Dokumentes.
14 Der Metatype Service248
Installieren des Knopflerfish-Desktops: Anschließend installieren
wir im laufenden OSGi Framework den grafischen Knopflerfish-
Desktop (vgl. auch Unterkapitel 10.5). Über die Metatype-Defini-
tion ist der Knopflerfish-Desktop in der Lage, eine Eingabemaske
zur Konfiguration des Translation Service zu generieren.
Das
configure-Kommando aus Kapitel 13 wird in diesem Tutorial des-
halb nicht mehr benötigt. Das Plug-in-Projekt
org.osgibook.console.cm
kann also aus dem Beispiel entfernt werden.
Die Plug-in-Projekte
In Abb. 14–2 sind die in diesem Tutorial verwendeten Plug-in-Pro-
jekte dargestellt.
Abb. 14–1
Übersicht über die
beteiligten Bundles
CommandProvider
META-INF
MANIFEST.MF
org.osgibook.translation
TranslationService,
ManagedService
META-INF
MANIFEST.MF
translation_de_DE.properties
MANIFEST.MF
META-INF
org.osgibook.helloworld
ConfigurationAdmin
g
OSGi Service Platform /
Config Admin Service
verwendet
Klassen aus
verwendet
Service
META-INF
MANIFEST.MF
org.osgibook.translation.impl
OSGI-INF
metatype
metatype.xml
MetaTypeService
yp
OSGi Service Platform /
MetaType Service
24914.1 Tutorial: Den Translation Service konfigurieren
Schritt 1: Anlegen der Metadaten im XML-Format
Um die Metatype-Informationen für die Konfiguration des Translation
Service zu beschreiben, legen Sie im Bundle
org.osgibook.transla-
tion.impl
die Datei OSGI-INF/metatype/metatype.xml an. In dieser Datei
beschreiben Sie die beiden Properties
translation.language und trans-
lation.country
, mit denen der Translation Service konfiguriert werden
kann. Das genaue Format und die Bedeutung der einzelnen XML-
Elemente und -Attribute werden wir detailliert in Unterkapitel 14.3
beschreiben:
<?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="TranslationService-Konfiguration"
description="Die Konfiguration des TranslationService">
<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>
<Designate pid="org.osgibook.translation.TranslationService">
<Object
ocdref="org.osgibook.translation.TranslationService"/>
</Designate>
</metatype:MetaData>
Abb. 14–2
Übersicht über die
Plug-in-Projekte
Listing 14–1
Die Datei metatype.xml
14 Der Metatype Service250
Schritt 2: Starten der Anwendung
Legen Sie anschließend eine Launch-Konfiguration an, in der Sie neben
den Bundles aus Ihrem Workspace auch die folgenden Bundles aus-
wählen:
org.eclipse.equinox.osgi
org.eclipse.equinox.services
org.eclipse.equinox.cm
Da wir in diesem Beispiel die Metatype-Service-Implementierung des
Knopflerfish-Desktops benutzen, müssen Sie das Bundle
org.eclipse.
equinox.metatype
nicht installieren.
Wenn Sie die Launch-Konfiguration ausführen, können Sie über
das
greet-Kommando einen Gruß in deutscher Sprache (die Default-
Einstellung) ausgeben lassen:
osgi> greet
Hallo OSGi-Welt sagt Bundle org.osgibook.helloworld!
Schritt 3: Installieren des Knopflerfish-Desktops
In Kapitel 11 haben wir Ihnen mit dem Knopflerfish-Desktop einen
alternativen Management Agent zur Equinox-Konsole vorgestellt. Im
Gegensatz zu Equinox bietet Knopflerfish die Möglichkeit, (Managed)
Services, die mittels Metadaten beschrieben sind, über ein grafisches
Frontend zu konfigurieren. Um diese Möglichkeit zu nutzen, installie-
ren Sie bitte direkt aus der laufenden Equinox-Instanz die entsprechen-
den Knopflerfish-Bundles
1
:
install http://www.osgibook.org/repo/jars/
util/util-2.0.0.jar start
install http://www.osgibook.org/repo/jars/
kxml/kxml-1.0.jar start
install http://www.osgibook.org/repo/jars/
desktop/desktop_all-2.0.0.jar start
install http://www.osgibook.org/repo/jars/
kf_metatype/kf_metatype_all-2.0.0.jar start
install http://www.osgibook.org/repo/jars/
cm_desktop/cm_desktop-2.0.0.jar start
Bereits nach der Installation des Bundles desktop_all-2.0.0.jar wird
automatisch der Knopflerfish-Desktop gestartet. Die Bundles
kf_metatype_all-2.0.0.jar und cm_desktop-2.0.0.jar enthalten zusätz-
1. Sie können die Bundles auch direkt aus dem Knopflerfish-Repository unter
http://www.knopflerfish.org/repo/index.html laden.
25114.1 Tutorial: Den Translation Service konfigurieren
lich die Implementierung für die Unterstützung des Metatype und
Configuration Admin Service.
Schritt 4: Konfigurieren des Translation Service
Wählen Sie nun im Bundles View des Knopflerfish-Desktops das
Bundle
org.osgibook.translation.impl aus, indem Sie auf das entspre-
chende Icon für das Bundle klicken. Öffnen Sie dann auf der rechten
Seite im Bundle Info View die Registerkarte »CM« (vgl. Abb. 14–3).
Auf dieser Registerkarte sehen Sie zwei Eingabefelder für die beiden in
der Metatype-Definition beschriebenen Attribute »Sprache« (
trans-
lation.language) und »Land« (translation.country). Beide Felder sind
bereits mit den ebenfalls in der Datei angegebenen Defaultwerten vor-
belegt.
Um eine neue Konfiguration für ein englisches Locale zu erzeugen,
geben Sie bitte als Sprache »en« und als Land »US« in den Eingabefel-
dern ein. Durch Klicken auf »Create« erzeugen Sie eine neue Konfigu-
ration und weisen diese dem Translation Service zu.
Wenn Sie nun auf die Equinox-Konsole wechseln, können Sie mit
dem
greet-Kommando erneut eine Grußbotschaft ausgeben:
osgi> greet
Hello OSGi World from bundle org.osgibook.helloworld!
Die Einstellungen können Sie nun jederzeit über die Knopflerfish-GUI
verändern und neu zuweisen.
Abb. 14–3
Konfigurationsansicht im
Knopflerfish-Desktop

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