Réception des données de configuration avec l'interface ManagedService
La configuration du profil Liberty est gérée par le service d'administration de configuration OSGi et est accessible conformément à la spécification du service d'administration de configuration OSGi. Des ensembles de propriétés de configuration sont identifiés par une identité persistante (PID) qui est utilisée pour associer un élément dans le fichier server.xml, où l'identité persistante (PID) est utilisée comme nom d'élément, au composant enregistré pour la réception des propriétés.
Pourquoi et quand exécuter cette tâche
Pour un bundle OSGi dont le cycle de vie est géré avec l'interface BundleActivator, une façon simple et directe de recevoir les propriétés de configuration consiste à implémenter l'interface org.osgi.service.cm.ManagedService, qui spécifie l'identité persistante comme l'une de ses propriétés.
Exemple
Dans Eclipse, vous devez sélectionner une exécution cible SPI dans
.- Ajoutez l'instruction suivante dans votre fichier MANIFEST.MF :
Import-Package: org.osgi.service.cm;version="1.5.0"
- Appuyez sur Ctrl + Maj + O pour mettre à jour votre activateur de regroupement.
Dans cet exemple, la classe Activator implémente l'interface ManagedService en plus de l'interface BundleActivator, et reçoit des propriétés de configuration avec la méthode updated. Vous pouvez indiquer des valeurs de propriété par défaut pour simplifier les éléments à spécifier dans la configuration utilisateur.
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");
}
}
}
La configuration utilisateur pour le bundle peut être fournie en option dans le fichier
server.xml ou dans un fichier inclus, par l'entrée suivante :<simpleBundle color="red" flavor="raspberry" />
Pour un exemple d'utilisation de la configuration plus avancé, voir Description de la configuration à l'aide du service des métatypes OSGi.