【问题标题】:Felix ConfigAdmin (File) | Does my file needs to include service.pid?Felix ConfigAdmin(文件)|我的文件是否需要包含 service.pid?
【发布时间】:2015-09-15 03:29:17
【问题描述】:

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

我下载了源代码来看看发生了什么,但我仍然无法弄清楚......

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

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

key="value"

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

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

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

我错过了什么吗?

【问题讨论】:

    标签: java osgi apache-felix


    【解决方案1】:

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

    【讨论】:

    • 你说得对,我在 Run Bundles 设置中看到了 FileUpload,这让我很困惑。
    猜你喜欢
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多