Java Reference
In-Depth Information
Damit kann mit dem Klassenlader des betreff enden Bundles eine Klasse geladen werden.
Die zusätzlichen Methoden der Schnittstelle Bundle wie getBundleContext, getBundleId,
getRegisteredServices, getState, getSymbolicName und getVersion sollen nur erwähnt wer-
den. Die Leserinnen und Leser können sich bei näherem Interesse die Javadoc-Dokumenta-
tion von OSGi ansehen.
98 Erweiterungen von OSGi
Das OSGi-Framework ermöglicht nicht nur die Installation von anwendungsspezifi schen
Komponenten, sondern auch von solchen, die das Basis-Framework erweitern. Für den The-
menschwerpunkt dieses Buches sind die Declarative Services von besonderem Interesse, so
dass wir sie etwas ausführlicher betrachten wollen.
9 .8 1 Declarative Services
Mit Hilfe der Declarative Services (hfi g auch Service Component Runtime oder SCR
genannt) kann man — wie der Name sagt — Objektbeziehungen zwischen Komponenten
deklarativ in einer XML-Datei beschreiben. Mit anderen Worten: Die Bereitstellung und
Nutzung von Diensten, die in unseren bisherigen Beispielen durch Aufruf der Methoden
registerService, getServiceReference und getService im Programmcode realisiert wurden,
können nun deklarativ mit Hilfe von XML-Dateien angegeben werden. Die „Einstiegsklasse“
muss nun auch nicht mehr die Schnittstelle BundleActivator implementieren, sondern kann
eine „ganz normale“ Java-Klasse (POJO: Plain Old Java Object) sein. Durch die Beschreibung
in der XML-Datei kann man zum Beispiel auch angeben, welche Methoden beim Starten
und Stoppen der Komponente ausgeführt werden sollen.
Um die folgenden Beispielkomponenten erfolgreich verwenden zu können, muss die Kom-
ponente, welche Declarative Services realisiert, installiert und gestartet worden sein. Dies
setzt allerdings das Vorhandensein der Komponente „Confi guration Admin Service“ voraus.
Wenn man also in Felix das Kommando lb ausführt, dann müssen u. a. diese Ausgabezeilen
zu sehen sein:
g! lb
START LEVEL 1
ID|State |Level|Name
0|Active | 0|System Bundle (4.0.2)
147|Active | 1|Apache Felix Configuration Admin Service (1.2.8)
148|Active | 1|Apache Felix Declarative Services (1.6.0)
...
g!
Als Beispiel für die Verwendung von Declarative Services realisieren wir die bisherigen
Beispielkomponenten nun mit Hilfe von Declarative Services. Damit Hot Deployment unter-
stützt wird, gehen wir wieder wie in Abschnitt 9.5 davon aus, dass eine Komponente instal-
liert ist, die das Package javacomp.osgi.bundle0 exportiert, in dem sich die Schnittstelle
 
Search WWH ::




Custom Search