Java Reference
In-Depth Information
ein solcher Import ist nur für solche Packages möglich, die von anderen Bundles explizit
exportiert werden. Man erreicht dadurch eine weitere Sichtbarkeitsstufe: Normalerweise
kann man durch Java-Sprachmittel die Sichtbarkeit von Attributen und Methoden einer
Klasse bzw. Schnittstelle sowie die Sichtbarkeit von Klassen und Schnittstellen eines
Packages festlegen. Die Packages selbst haben innerhalb einer Java-Anwendung jedoch glo-
bale Sichtbarkeit (d. h. in jedem Package kann jedes andere verwendet werden). Durch OSGi
kann man auch eine Sichtbarkeit auf Package-Ebene festlegen. Zur Realisierung werden —
wie schon beschrieben — unterschiedliche Klassenlader für unterschiedliche Komponenten
verwendet.
97 BundleContext und Bundle
Über den Parameter BundleContext, der einer Komponente in den BundleActivator-Metho-
den übergeben wird, erhält eine Komponente Zugriff auf die Dienstleistungen, die das OSGi-
Framework bietet. Viele der Methoden sind überladen. Im Folgenden wird eine Auswahl
einiger Methoden (wegen des Überladens ohne Parameter) angegeben, um einen Eindruck
von der gebotenen Funktionalität zu erhalten:
! getBundle und getBundles (Rückgabetyp Bundle bzw. Bundle[]): Mit diesen Methoden
erhält man Zugriff auf das eigene oder andere Bundles.
! installBundle: Damit kann man per Programm ein Bundle installieren.
! addServiceListener und removeServiceListener: In Listing 9.7 wurden diese Methoden
verwendet. Sie dienen zum An- und Abmelden eines ServiceListeners, der über Änderun-
gen im Dienstangebot informiert wird.
! addBundleListener und removeBundleListener: Diese Methoden dienen zum An- und
Abmelden eines BundleListeners. Ein BundleListener wird bei allen Zustandsänderungen
von Bundles (s. Bild 9.1) informiert.
! addFrameworkListener und removeFrameworkListener: Ein FrameworkListener wird
aufgerufen, um Zustandsänderungen des Frameworks (Fehler, Warnungen usw.) mitzu-
teilen.
! registerService: Diese Methoden dienen wie gesehen zum Anmelden eines Dienstes.
! getServiceReference, getServiceReferences und getAllServiceReferences: Mit diesen
Methoden kann man sich auf unterschiedliche Weisen ein oder mehrere ServiceRefe-
rence-Objekte geben lassen.
! getService und ungetService: Mit getService erhält man unter Angabe einer ServiceRefe-
rence Zugriff auf das angemeldete Dienstobjekt. Mit ungetService kann man anzeigen,
dass man das Objekt nicht mehr benötigt.
Sowohl die Methoden getBundle bzw. getBundles als auch installBundle liefern ein oder
mehrere Bundle-Objekte zurück. Bundle ist eine Schnittstelle, die eine OSGi-Komponente
repräsentiert. Diese Schnittstelle besitzt einige Methoden wie start, stop, update und unin-
stall, die aufgrund ihrer Namen selbsterklärend sind und den Felix-Kommandos gleichen
Namens, die wir zuvor benutzt haben, entsprechen. Eine weitere Methode ist loadClass.
 
Search WWH ::




Custom Search