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

Felix ConfigAdmin (File) | Does my file needs to include service.pid?

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

我下载了源代码看看是怎么回事,但我还是想不通...

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

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

key="value"

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

然后我发现在阅读我的属性后,FilePersistenceManager.seek() 只有 returns 字典,如果它不包含 service.pid 属性,或者它包含 属性 并且等于文件名。在比较之前,它用斜杠替换了点,所以它永远不会等于...我最好不要指定 service.pid 属性 无论如何,我不明白这一点。

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

我是不是漏了什么?

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