Java Reference
In-Depth Information
Das Intervall kann aber auch off en sein (in diesem Fall gehören die angegebenen Versions-
nummern nicht mehr zum Bereich der akzeptierten Versionsnummern):
Import-Package: javacomp.osgi.bundle1;version="(1.1.3,2.3.9)"
Auch halboff ene Intervalle sind möglich:
Import-Package: javacomp.osgi.bundle1;version="(1.1.3,2.3.9]",
javacomp.osgi.bundle2;version="[2.4.8,2.5.3)"
Es gibt noch einige weiterer Aspekte von OSGi, die interessant wären, auf deren Darstellung
ich aber verzichten möchte, da noch eine ganze Reihe weiterer Komponentensysteme auf
ihre Vorstellung warten.
910 Bewertung
Wir prüfen nun, inwiefern OSGi gemäß den Kriterien aus Kapitel 7 ein Komponentensystem
darstellt. Dabei wird nicht nur der OSGi-Kern berücksichtigt, sondern auch die Erweiterung
durch die Declarative Services.
! Zu E1: Eine OSGi-Komponente, ein Bundle, muss eine klar defi nierte Verzeichnisstruk-
tur aufweisen. Im Verzeichnis META-INF befi ndet sich die Manifest-Datei. Darin kann als
Bundle-Activator eine Einstiegsklasse spezifi ziert werden. Wie im Text erklärt kann es
auch Bundles geben, die keine Einstiegsklasse benötigen. Das können zum Beispiel sol-
che sein, die nur Klassen und Schnittstellen eines oder mehrerer Packages zur Ver-
fügung stellen. Es kann auch sein, dass in der Manifest-Datei auf eine weitere Konfi gura-
tionsdatei verwiesen wird, die dann von einer Komponente wie Declarative Services
ausgewertet wird. In dieser Datei kann dann ebenfalls eine (weitere) Einstiegsklasse
festgelegt sein.
! Zu E2: Eine Kombination von Komponenten erfolgt einerseits deklarativ auf Package-
Ebene durch Import- und Export-Package in den Manifest-Dateien und andererseits auf
Objektebene. Zur Kombination auf Objektebene kann man zum einen per Programmcode
Objekte beim Framework registrieren und diese dann über entsprechende Methoden fi n-
den. Zum anderen ist aber durch Declarative Services auch eine Kombination von Objek-
ten möglich, die rein deklarativ durch XML-Dateien oder Annotationen vorgenommen
werden kann. Hot Deployment wird ebenfalls problemlos unterstützt.
! Zu E3: Das Framework erzeugt Objekte der Einstiegsklassen, falls ein Bundle-Activator
defi niert ist. Auch mit den Declarative Services werden Objekte entsprechend konfi gu-
rierter Einstiegsklassen erzeugt. Lebenszyklen gibt es in mehrfacher Weise: Zum einen
gibt es einen Lebenszyklus für die Komponente selbst, u. a. mit den Zuständen INS-
TALLED, RESOLVED und ACTIVE (s. Bild 9.1). Zum anderen gibt es einen Lebenszyklus
für die vom Framework oder seinen Erweiterungen erzeugten Objekte, entweder durch
Aufruf der Methoden start und stop eines BundleActivator-Objekts oder durch Aufruf von
Methoden, die als Activate- und Passivate-Methoden gekennzeichnet sind, bei einem
Component-Objekt, falls Declarative Services im Einsatz sind.
 
Search WWH ::




Custom Search