Description de la configuration à l'aide du service des métatypes OSGi

Les propriétés de configuration de chaque service peuvent être décrites par des métadonnées conformes à la spécification OSGi Metatype Service. Les métadonnées peuvent inclure des valeurs par défaut, des noms et des descriptions traduisibles, et des informations permettant la validation des valeurs d'entrée. Le fichier XML généré est conditionné dans le bundle contenant votre service dans le répertoire OSGI-INF/metatype, conformément à la spécification.

Pourquoi et quand exécuter cette tâche

La spécification de métadonnées pour décrire votre configuration est facultative ; elle offre les avantages suivants :
  • les valeurs par défaut peuvent être séparées du code d'implémentation dans le fichier XML des métatypes dans lequel elles sont faciles à localiser ;
  • les types de données appropriés et d'autres données de validation peuvent être spécifiées pour chaque attribut, ce qui permet la validation par l'analyseur syntaxique de la configuration et les outils de développement et simplifie le code que vous rédigez pour traiter les attributs ;
  • votre configuration est incluse dans le schéma XML qui décrit la configuration disponible aux outils de développement et à d'autres utilitaires ;
  • des noms et des descriptions pouvant être traduits sont fournis pour chaque attribut et apparaîtront dans les outils de développement.

Procédure

  1. Créez un fichier xml dans le répertoire OSGI-INF/metatype de votre bundle et ajoutez une déclaration d'espace de nom pour les espaces de nom des métatypes OSGi :
    <metatype:MetaData xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.1.0">
    </metatype:MetaData>
  2. Ajoutez un élément de définition de classe d'objet (OCD) devant contenir l'ensemble d'attributs avec un identificateur et, en option, un nom et une description. Spécifiez également un élément Designate afin de mapper la définition de classe d'objet au PID utilisé dans votre code et le fichier server.xml.
    <OCD name="b2c" description="bundle two config" id="b2c-id">
    </OCD>
    
    <Designate pid="testBundleTwo">
    <Object ocdref="b2c-id" />
    </Designate>
  3. Ajoutez des éléments de définition d'attribut (AD) pour chaque propriété de configuration, dans l'élément de définition de classe d'objet (OCD). Chaque attribut requiert un identificateur qui est aussi utilisé dans le fichier server.xml et dans le code qui reçoit la configuration injectée. Il peut en option être associé à un nom et à une description qui peuvent être utilisés par les outils de développement et d'autres outils graphiques. La spécification d'un type de données permet à l'environnement d'exécution de valider l'entrée pour ce type et simplifie votre code de traitement. La spécification d'une valeur par défaut utile permet à la configuration fournie par l'utilisateur d'être minimale et contient toutes les valeurs par défaut de configuration dans un emplacement connu :
    <AD name="boolProperty" description="a boolean property" id="boolProp" 
        type="Boolean" default="false" />
  4. Ensuite, vous avez le fichier metatype.xml suivant :
    <?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. Codez votre service en vue de la réception des propriétés de configuration. Sans la description de métatype, toutes vos propriétés sont fournies sous forme de valeurs de type String et sont traitées comme suit :
    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");

    Et l'environnement d'exécution aura déjà validé les valeurs d'entrée en vérifiant que leurs types sont corrects.


Icône indiquant le type de rubrique Rubrique Tâche



Icône d'horodatage Dernière mise à jour: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_setup_values
Nom du fichier : twlp_setup_values.html