configuration - OSGi 声明式服务和配置管理

标签 configuration osgi declarative-services

我正在编写带有声明性服务用法的包。对于配置,我在 DS 声明中使用属性。这些 Prop 通常可以由 Config Admin 更改,但它们不会持久化。容器重启后,组件有默认值。

我正在使用这样的配置管理员:

Configuration c = configurationAdmin.getConfiguration(UserAgent.SERVICE_PID, null);
System.out.println(c.getProperties()); // every time is null!
Dictionary props = new Hashtable();
props.put(UserAgent.PROPERTY_PORT, 5555);
c.update(props);

在组件中我有:
// ...

@Modified
public void updated(ComponentContext context) {
    config = context.getProperties();
    init();
}

@Activate
protected void activate(ComponentContext context) {
    config = context.getProperties();
    init();
}
//...

我正在使用 Felix,属性文件存储在缓存中
service.bundleLocation="file:bundles/cz.b2m.osgi.phonus.core_1.0.0.SNAPSHOT.jar"
service.pid="cz.b2m.osgi.phonus.sip"
port=I"5555"

但是重启后没有加载。我做错了什么?感谢所有提示。

最佳答案

问题出在 Pax Runner 中,每次重新启动(干净)都会删除 Config Admin 包的数据文件夹。

要确保 Pax Runner 不会清除数据,您可以使用 --usePersistedState=true旗帜。

关于configuration - OSGi 声明式服务和配置管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10815411/

相关文章:

java - OSGI:从DS获取属性信息

configuration - 配置 gvim 设置颜色和字体

WCF 错误 - 找不到与方案匹配的基地址

java - 在 EMF 插件项目中使用外部库时出现 NoClassDefFoundError 异常

maven - 即使在安装 RDF4J 包后,OpenDaylight OSGi 也无法找到 RDF4J 类

osgi - 如何在更新 bundle OSGI 时保持服务/组件运行

ubuntu - sendmail:如何在 ubuntu 上配置 sendmail?

PHP UTF-8 配置

java - OSGi应用程序修补机制

java - 处理动态 OSGi 服务依赖关系的最佳方法