Recepción de datos de configuración utilizando la interfaz ManagedService
El servicio de administración de configuración OSGi gestiona la configuración de perfiles Liberty y puede acceder a él según la especificación de dicho servicio. Los conjuntos de propiedades de configuración se identifican mediante una identidad persistente (PID) que se utiliza para asociar un elemento en el archivo server.xml, donde el PID se utiliza como el nombre de elemento, a un componente que registra para recibir las propiedades.
Acerca de esta tarea
Para un paquete OSGi cuyo ciclo se gestiona utilizando la interfaz BundleActivator, una forma sencilla de recibir las propiedades de configuración es implementar la interfaz org.osgi.service.cm.ManagedService, que especifica el PID como una de sus propiedades.
Ejemplo
En Eclipse, debe seleccionar un tiempo de ejecución de destino SPI en
.- Añada la siguiente sentencia al archivo MANIFEST.MF:
Import-Package: org.osgi.service.cm;version="1.5.0"
- Pulse Control + Mayús + O para actualizar el activador de paquete.
En este ejemplo, la clase Activator implementa la interfaz ManagedService, además de la interfaz BundleActivator, y recibe las propiedades de configuración utilizando el método updated. Puede proporcionar valores de propiedades predeterminadas para simplificar lo que debe especificarse en la configuración del usuario.
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 configuración de usuario para el paquete se puede proporcionar opcionalmente en el archivo server.xml o en un archivo incluido, mediante la entrada siguiente: <simpleBundle color="red" flavor="raspberry" />
Para utilizar una configuración más avanzada, consulte Descripción de la configuración mediante OSGi Metatype Service.