java - Felix ConfigAdmin(文件)|我的文件需要包含 service.pid 吗?

标签 java osgi apache-felix

我正在使用 Felix ConfigurationAdmin 1.8.6(包含在 OSGI enRoute 中),但我无法让它处理文件夹中的文件。

我下载了源代码来看看发生了什么,但我仍然不明白......

首先,我添加了运行属性 felix.cm.dir,指定我要配置服务的文件夹。从我所看到的调试来看,它工作正常,但我的托管服务得到一个空属性映射。

接下来,我发现我的属性必须具有以下格式才能读取(带双引号):

key="value"

不过,我得到了一个空属性映射...

然后我发现,在读取我的属性后,FilePersistenceManager.seek() 仅在不包含 service.pid 属性或包含该属性且等于文件名的情况下返回字典。在比较之前,它用斜杠替换点,因此它永远不等于...我最好不要指定 service.pid 属性,无论如何,我不明白这一点。

当字典返回到CachingPersistenceManagerProxy时,只有当字典包含service.pid或factory.pid属性时,它才会被缓存;这永远不会发生。

我错过了什么吗?

最佳答案

我不知道 enRoute 是否附带 Apache Felix FileInstall,但如果没有此 bundle 配置管理服务将不会获取配置文件。 FileInstall 通常会处理这个问题。在这种情况下,是的,您需要确保您的 cfg 文件的名称确实与您的 PID 匹配。 因此,对于 pid: my.conf.foo 的配置,您需要在 FileInstaller Bundle 监视的文件夹中放置一个文件 my.conf.foo.cfg 。它将获取此文件并确保您的配置已使用该文件的内容进行更新。

关于java - Felix ConfigAdmin(文件)|我的文件需要包含 service.pid 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32577222/

相关文章:

java - 多个 bundle 以 apache felix config.properties 启动

java - 获取未知类字段的值

java - JAXB 错误 : unexpected element when unmarshalling

java - JSF 2.3 整个 bean 验证会丢弃所有字段。是故意的吗?难道是我用错了什么东西?

java - 将 json 对象转换为 java 对象。未知类别

java - Pax-exam 4 没有 felix() 方法

java - bundle 跟踪器和 bundle 安装/启动顺序

java - HA Karaf 酒窖群

java - 如何使用代码停止 Apache Felix Webconsole 中的 bundle

java - 如何在 Felix 中使用 Derby 客户端?