我使用的是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属性,它只会被缓存;从未发生过。
我错过了什么吗?
答案 0 :(得分:3)
我不知道enRoute是否带有Apache Felix FileInstall,但是如果没有这个捆绑配置,管理服务就不会获取配置文件。 FileInstall通常会处理这个问题。在这种情况下,是的,您需要确保您的cfg文件确实具有与您的PID匹配的名称。 因此,对于使用pid:my.conf.foo的配置,您需要在FileInstaller Bundle监视的文件夹中使用文件my.conf.foo.cfg。它将获取此文件并确保使用文件内容更新配置。