代码之家  ›  专栏  ›  技术社区  ›  JSlain

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

  •  0
  • JSlain  · 技术社区  · 11 年前

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

    我下载了这些资料,想看看到底发生了什么,但我还是搞不清楚。。。

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

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

    key="value"
    

    尽管如此,我还是得到了一个空属性映射。。。

    然后我发现,在阅读了我的属性之后 FilePersistenceManager.seek() 仅当字典不包含服务时返回字典。pid属性,或者它包含该属性并等于文件名。在比较之前,它用斜线代替圆点,所以它永远不会等于……我最好不要指定服务。无论如何,pid属性,我看不出有什么意义。

    当Dictionary返回到CachingPersistenceManagerProxy时,只有在Dictionary包含服务时才会缓存它。pid-ou工厂。pid特性;这永远不会发生。

    我错过了什么吗?

    1 回复  |  直到 11 年前
        1
  •  3
  •   Achim Nierbeck    11 年前

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