Konfigurationsdaten mit der ManagedService-Schnittstelle empfangen

Die Liberty -Konfiguration wird vom OSGi Configuration Admin Service verwaltet und kann gemäß der Spezifikation des OSGi Configuration Admin Service aufgerufen werden. Gruppen von Konfigurationseigenschaften werden mit einer PID (persistent gespeicherte ID) angegeben, die für die Zuordnung des Elements in der Datei server.xml verwendet wird, in der die PID als der Elementname verwendet wird, zu der Komponente, die für den Empfang der Eigenschaften registriert wird.

Informationen zu dieser Task

Für ein OSGi-Bundle, dessen Lebenszyklus durch die Verwendung der BundleActivator-Schnittstelle verwaltet wird, ist die Implementierung der Schnittstelle org.osgi.service.cm.ManagedService, die die PID als eine ihrer Eigenschaften angibt, eine unkomplizierte Möglichkeit, die Konfigurationseigenschaften zu erhalten.

Beispiel

Beachten Sie Folgendes:
  1. In Eclipsemüssen Sie unter Fenster > Vorgaben > Plug-in-Entwicklung > Zielplattformeine SPI-Ziellaufzeit auswählen.

  2. Fügen Sie Ihrer Datei MANIFEST.MF die folgende Anweisung hinzu:
    Import-Package: org.osgi.service.cm;version="1.5.0"
  3. Drücken Sie die Tastenkombination Strg + Umschalttaste + O, um Ihren Bundleaktivator zu aktualisieren.

In diesem Beispiel implementiert die Aktivatorklasse die ManagedService-Schnittstelle zusätzlich zur BundleActivator-Schnittstelle und empfängt ihre Eigenschaften mit der Methode updated. Sie können Standardeigenschaftswerte angeben, um die Angaben in der Benutzerkonfiguration zu vereinfachen.

public class Activator implements BundleActivator, ManagedService {

  public void start(BundleContext context) throws Exception {
    System.out.println("Sample bundle starting");
    // register to receive configuration
    ServiceRegistration<ManagedService> configRef = context.registerService(
      ManagedService.class,
      this,
      getDefaults()
      );
  }

  public void stop(BundleContext context) throws Exception {
    System.out.println("Sample bundle stopping");
    configRef.unregister();
  }

  Hashtable getDefaults() {
    Hashtable defaults = new Hashtable();
    defaults.put(org.osgi.framework.Constants.SERVICE_PID, "simpleBundle");
    return defaults;
  }

  public void updated(Dictionary<String, ?> properties) throws ConfigurationException {
    if (properties != null)
    {
      String configColor = (String) properties.get("color");
      String configFlavor = (String) properties.get("flavor");
    }
  }

}
Die Benutzerkonfiguration für das Bundle kann in der Datei server.xml oder einer enthaltenen Datei mit dem folgenden Eintrag definiert werden:
<simpleBundle color="red" flavor="raspberry" />
Hinweis: Der Elementname in der Benutzerkonfiguration, simpleBundle , stimmt mit dem Wert der Eigenschaft org.osgi.framework.Constants.SERVICE_PID überein, die in der ManagedService -Registrierung verwendet wird.

Informationen zur erweiterten Konfigurationsverwendung finden Sie unter Konfiguration mit dem OSGi-Metatypservice beschreiben.