Service für den Empfang von Konfigurationseigenschaften codieren
Konfigurationseigenschaften sind über das in der Aktivierungsmethode bereitgestellte Objekt org.osgi.service.component.ComponentContext verfügbar.
Vorbereitende Schritte
Informationen zu diesem Vorgang
Falls Eigenschaften aktualisiert werden, nachdem die Aktivierung stattgefunden hat, ist die für die Injektion verwendete Methode abhängig davon, welchen Kontext der Service in der OSGi-DS-Deklaration (OSGi Declarative Services) bereitstellt.
Im Allgemeinen ist es am besten, eine Methode zu bestimmen, die eigens für die Injektion aktualisierter Eigenschaften durch Verwendung des Attributs modified in der Servicedeklaration verwendet werden soll. Wenn keine modified-Methode verfügbar ist, inaktiviert DS den Service und reaktiviert ihn mit den neuen Eigenschaften.
Das Stoppen und erneute Starten eines Service kann dazu führen, dass abhängige Services ebenfalls gestoppt und erneut gestartet werden, und muss (sofern nicht unbedingt erforderlich) vermieden werden. Die Verwendung des Attributs modified ist die bevorzugte Methode für den Empfang von Konfigurationsaktualisierungen.
Beispiel
private static Dictionary<String, Object> _props = null;
protected void activate(ComponentContext cc) {
_props = cc.getProperties();
}
protected void modified(Map<?, ?> newProperties) {
if (newProperties instanceof Dictionary) {
_props = (Dictionary<String, Object>) newProperties;
} else {
_props = new Hashtable(newProperties);
}
}
- Codieren Sie die Methoden so, dass mindestens die in demselben Bundle enthaltenen Standardeigenschaften angenommen werden und gleichzeitig Überschreibungen durch den Benutzer berücksichtigt werden, damit keine Migration der Benutzerkonfiguration erforderlich ist.
- Ignorieren Sie redundante oder nicht erkannte Eigenschaften.