Codificación del servicio para recibir propiedades de configuración
Las propiedades de configuración están disponibles mediante el objeto org.osgi.service.component.ComponentContext que se proporciona en el método de activación.
Antes de empezar
Acerca de esta tarea
Si las propiedades se actualizan después de que se haya producido la activación, el método utilizado para la inyección depende del contexto que el servicio proporciona en su declaración de servicios declarativos (DS) de OSGi.
Normalmente, es mejor declarar el método que se va a utilizar específicamente para la inyección de propiedades actualizadas utilizando el atributo modified en la declaración de servicio. Si un método modificado no está disponible, DS desactiva y vuelve a activar el servicio con las nuevas propiedades.
Desactivar y, después, activar un servicio también puede provocar que los servicios dependientes se reciclen, y se debe evitar, a menos que se especifique que es necesario. El método preferido para recibir las actualizaciones de configuración es utilizar el atributo modified.
Ejemplo
private static Dictionary<String, Object> _props = null;
protected void activate(ComponentContext cc) {
_props = cc.getProperties();
}
protected void modified(Map<?, ?> newProperties) {
if (newProperties instanceof Dictionary) {
_props = (Dictionary<String, Object>) newProperties;
} else {
_props = new Hashtable(newProperties);
}
}
- Codifique los métodos para esperar como mínimo las propiedades predeterminadas que están incluidas en el mismo paquete, pero tenga en cuenta las alteraciones temporales del usuario, de forma que la migración de la configuración de usuario no sea necesaria.
- Ignore las propiedades redundantes o no reconocidas.