【问题标题】:How can I specify location of property file in OSGi blueprint?如何在 OSGi 蓝图中指定属性文件的位置?
【发布时间】:2015-02-25 01:46:41
【问题描述】:

我想指定属性文件的位置,OSGi 蓝图属性占位符应该从中读取属性值:

<cm:property-placeholder persistent-id="myBundle"/>

<bean
    id="myCoolBean"
    class="test.properties.MyCoolBean">
    <property
        name="echo"
        value="${echo}"/>
</bean>

更新: 配置 felix.configadmin + felix.fileinstall 对我有用。

我安装了:

org.apache.felix.configadmin-1.8.0.jar

org.apache.felix.fileinstall-3.1.4.jar

org.eclipse.equinox.cm-3.2.0.jar

我指定了 VM 参数 -Dfelix.fileinstall.dir=C:/eclipse/config

myBundle.cfg 文件具有以下值:

回声=回声

【问题讨论】:

    标签: osgi blueprint-osgi


    【解决方案1】:

    蓝图中的属性占位符不适用于文件。相反,它使用持久 id 从 ConfigurationAdmin 服务中检索配置。

    所以解决方案是将 felix config admin 与 felixfileinstall 一起安装。所以配置将从文件夹中检索并在 ConfigurationAdmin 中更新。

    在 apache karaf 中已经配置好了,但你也可以自己做。见我的karaf tutorial about config admin

    如果你想使用普通的 felix,那么你可以看看 karaf 做了什么来解决它。因此,例如在 config.properties 中有 felix 文件安装的设置。在那里你必须例如设置包含您的配置的目录。在简单的 felix 中,这将是框架属性。

    这是 karaf 设置的:

    felix.fileinstall.enableConfigSave = true
    felix.fileinstall.dir    = ${karaf.etc}
    felix.fileinstall.filter = .*\\.cfg
    felix.fileinstall.poll   = 1000
    felix.fileinstall.noInitialDelay = true
    felix.fileinstall.log.level = 3
    

    【讨论】:

    • 我不想使用 Karaf。如何配置 ConfigurationAdmin 以从文件中读取属性?
    • 编辑了答案以反映在普通 felix 中要做什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 2018-08-06
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多