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

时间:2015-09-15 03:29:18

标签: java osgi apache-felix

我使用的是Felix ConfigurationAdmin 1.8.6(包含在OSGI enRoute中),我无法使用文件夹中的文件。

我下载了这些来源,看看发生了什么,但我仍然无法弄明白......

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

接下来,我发现我的属性必须具有以下格式(使用双引号):

key="value"

仍然,我得到一个空属性地图......

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

当Dictionary返回CachingPersistenceManagerProxy时,如果Dictionary包含service.pid ou factory.pid属性,它只会被缓存;从未发生过。

我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

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