Konfiguration mit OSGi-Metatypservice beschreiben

Die Konfigurationseigenschaften für jeden Service können in Metadaten gemäß der Spezifikation des OSGi-Metatypservice beschrieben werden. Das Metadaten können Standardwerte, übersetzbare Namen, Beschreibungen und Informationen enthalten, um die Validierung von Eingabewerten zu ermöglichen. Die erstellte XML-Datei wird gemäß der Spezifikation in das Bundle mit Ihrem Service im Verzeichnis OSGI-INF/metatype gepackt.

Informationen zu diesem Vorgang

Die Bereitstellung von Metadaten zur Beschreibung Ihrer Konfiguration ist optional, bietet allerdings folgende Vorteile:
  • Standardwerte können vom Implementierungscode getrennt und in die XML-Metatypendatei gestellt werden, wo sie einfach zu lokalisieren sind.
  • Es können für jedes Attribut zutreffende Datentypen und andere Validierungsdaten angegeben werden, die die Validierung durch den Konfigurationsparser und Entwicklertools ermöglichen und außerdem den Code zur Verarbeitung des Code, den Sie schreiben, vereinfachen.
  • Ihre Konfiguration wird in das XML-Schema aufgenommen, mit dem für die Entwicklertools und andere Dienstprogramme die verfügbare Konfiguration beschrieben wird.
  • Übersetzbare Namen und Beschreibungen können für jedes Attribut bereitgestellt werden und werden in den Entwicklertools angezeigt.

Vorgehensweise

  1. Erstellen Sie eine XML-Datei im Verzeichnis OSGI-INF/metatype Ihres Bundles, und fügen Sie eine Namespacedeklaration für die Namespaces der OSGi-Metatypen hinzu.
    <metatype:MetaData xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.1.0">
    </metatype:MetaData>
  2. Fügen Sie ein OCD-Element (Object Class Definition, Objektklassendefinition) hinzu, die die Attributgruppe enthalten soll, mit einer Kennung und, optional, mit einem Namen und einer Beschreibung. Stellen Sie auch ein Designate-Element bereit, um das OCD-Element der PID, die in Ihrem Code und der Datei server.xml verwendet wird, hinzuzufügen.
    <OCD name="b2c" description="bundle two config" id="b2c-id">
    </OCD>
    
    <Designate pid="testBundleTwo">
    <Object ocdref="b2c-id" />
    </Designate>
  3. Fügen Sie für jede Konfigurationseigenschaft AD-Elemente (Attribute Definition, Attributdefinition) in der OCD hinzu. Jedes Attribut benötigt eine Kennung, die auch in der Datei server.xml und in dem Code, der die injizierte Konfiguration erhält, verwendet wird. Es kann einen Namen und Beschreibung haben, die von den Entwicklertools und anderen grafischen Tools verwendet werden können. Die Angabe eines Datentyps ermöglicht der Laufzeitumgebung, die Eingabe für diesen jenen Typ zu überprüfen und Ihren Verarbeitungscode zu vereinfachen. Die Angabe eines nützlichen Standardwerts reduziert die benutzerdefinierte Konfiguration auf ein Mindestmaß, alle Konfigurationsstandardwerte sind in einem Verzeichnis enthalten:
    <AD name="boolProperty" description="a boolean property" id="boolProp" 
        type="Boolean" default="false" />
  4. Dann haben Sie die folgende Datei metatype.xml.
    <?xml version="1.0" encoding="UTF-8"?>
    <metatype:MetaData xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.1.0">
    
    		<OCD name="b2c" description="bundle two config" id="testBundleTwo-2-id">
    				<AD name="textProperty" description="a text property"
                  id="textProp" type="String" default="default string" />
    				<AD name="boolProperty" description="a boolean property"
                  id="boolProp" type="Boolean" default="false" />
    				<AD name="intProperty" description="an integer property"
                  id="intProp" type="Integer" default="14" /> 
    	</OCD>
    
    		<Designate pid="testBundleTwo-2">
    				<Object ocdref="testBundleTwo-2-id" />
    	</Designate>
    
    </metatype:MetaData>
  5. Codieren Sie Ihren Service für den Empfang der Konfigurationseigenschaften. Ohne die Metatypenbeschreibung werden alle Ihre Eigenschaften als String-Werte bereitgestellt und folgendermaßen verarbeitet:
    String textProp = (String) properties.get("textProp");
    Boolean boolProp = Boolean.parseBoolean((String) properties.get("boolProp"));
    int intProp = Integer.parseInt((String) properties.get("intProp"));
    
    String textProp = (String) properties.get("textProp");
    Boolean boolProp = (Boolean) properties.get("boolProp");
    int intProp = (Integer) properties.get("intProp");

    Die Laufzeitumgebung wird bereits geprüft haben, ob die Eingabewerte den richtigen Typ haben.


Symbol das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 01.12.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_setup_values
Dateiname: twlp_setup_values.html