Osgi 使用托管服务获取配置数据

Osgi 使用托管服务获取配置数据,osgi,osgi-bundle,Osgi,Osgi Bundle,这是我的ConfigUpdater类 private final class ConfigUpdater implements ManagedService { @SuppressWarnings("rawtypes") @Override public void updated(Dictionary config) throws ConfigurationException { if (config == null) { ret

这是我的ConfigUpdater类

private final class ConfigUpdater implements ManagedService {

    @SuppressWarnings("rawtypes")
    @Override
    public void updated(Dictionary config) throws ConfigurationException {
        if (config == null) {
            return;
        }

        String title = ((String)config.get("title"));

    }
}

我的问题是如何在任何其他类中访问字符串标题?或者如何在任何其他类中获取配置字典。。。仅当更改配置文件时,才会调用更新的方法。。。一旦它被更改,如何在其他类中访问它的数据?

通常,您会创建一个将这些属性公开给其他组件的服务

例如,您可以为ConfigUpdater提供第二个接口。另一个组件可以从服务注册表中查找/注入此接口,并使用其方法访问属性

我在GitHub上创建了一个示例项目:

最重要的部分是实现ManagedService和自定义接口的服务:

@Component(properties=@Property(name=Constants.SERVICE_PID, value="example.configurationservice"))
public class ConfigurationUpdater implements ManagedService, MyConfiguration{

private volatile String message;

@Override
public void updated(@SuppressWarnings("rawtypes") Dictionary properties) throws ConfigurationException {
    message = (String)properties.get("message");
}

@Override
public String getMessage() {
    return message;
}
}
然后可以像这样使用配置:

@Component(provides=ExampleConsumer.class,
    properties= {
    @Property(name = CommandProcessor.COMMAND_SCOPE, value = "example"),
    @Property(name = CommandProcessor.COMMAND_FUNCTION, values = {"showMessage"}) })
public class ExampleConsumer {
    @ServiceDependency
    private volatile MyConfiguration config;

    public void showMessage() {
     String message = config.getMessage();
     System.out.println(message);
    }
}

对不起,我是OSGI的新手。你能用更详细的说明吗?我创建了一个GitHub项目示例: