Instance de configuration unique et instances de configuration multiples

Vous pouvez aussi configurer plusieurs instances de configuration avec les services des métatypes OSGi.

Comme décrit dans Description de la configuration à l'aide du service des métatypes OSGi, vous pouvez utiliser le service de métatype OSGi afin de prendre en charge un ensemble unique de propriétés de configuration pour un service donné (identifié par un PID de configuration). Il est également fréquent de prendre en charge plusieurs instances du même type de configuration, par exemple de la même façon que le profil Liberty prend en charge plusieurs entrées pour des applications et des sources de données. Pour ce faire, vous pouvez fournir une définition de métatype qui indique à l'analyseur syntaxique de la configuration Liberty et au service d'administration de la configuration qu'il s'agit d'une configuration de fabrique. De plus, la classe qui reçoit la configuration doit implémenter l'interface org.osgi.service.cm.ManagedServiceFactory.

Pour prendre en charge plusieurs instances, définissez des éléments de configuration de niveau supérieur dans le fichier server.xml comme suit :
<server>
    <teenager name="joy" age="15" />
    <teenager name="angela" age="18" />
</server>
Vous devez définir la configuration dans les métadonnées en ajoutant un attribut factoryPid à l'élément Designate.
Remarque : Un attribut pid est également nécessaire si vous utilisez une interface ManagedServiceFactory pour recevoir la configuration ; si vous utilisez un composant de service déclaratif, il n'est pas requis.
<?xml version="1.0" encoding="UTF-8"?>
<metatype:MetaData xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.1.0"  
                   xmlns:ibm="http://www.ibm.com/xmlns/appservers/osgi/metatype/v1.0.0">

    <OCD id="teenager-ocd" name="teenager" >
       <AD id="name" name="name" type="String" />
       <AD id="age" name="age" type="Integer" />
    </OCD>

    <Designate factoryPid="teenager" pid="teenager">
        <Object ocdref="teenager-ocd" />
    </Designate>
  
</metatype:MetaData>
L'implémentation ManagedServiceFactory est enregistrée en tant que type de service ManagedServiceFactory avec le PID de fabrique, comme suit :
bundleContext.registerService(ManagedServiceFactory.class, new MgdSvcFactoryImpl(), new Hashtable();
defaults.put(org.osgi.framework.Constants.SERVICE_PID, "teenager"));
L'implémentation ManagedServiceFactory reçoit un ensemble de propriétés pour chaque instance de la configuration teenager, chacune étant identifiée de façon unique par son propre PID (généré en interne) qui est fourni à la méthode updated() comme suit :
public void updated(String pid, Dictionary<String, ?> properties)
			throws ConfigurationException {
	  String name = (String) properties.get("name");
    Integer age = (Integer) properties.get("age");
	}

Si une instance de configuration particulière est supprimée, par exemple parce que l'un des éléments teenager est supprimé du fichier server.xml, l'implémentation ManagedServiceFactory est notifiée via la méthode deleted() et le PID de l'instance supprimée est fourni. Ainsi, l'implémentation ManagedServiceFactory peut effectuer le suivi des instances qui sont valides à tout moment.


Icône indiquant le type de rubrique Rubrique de référence



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=rwlp_extensions_instances
Nom du fichier : rwlp_extensions_instances.html