如何在OSGi蓝图中指定属性文件的位置?

时间:2015-02-25 01:46:41

标签: osgi blueprint-osgi

我想指定属性文件的位置,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文件具有以下值:

echo = Echo

1 个答案:

答案 0 :(得分:0)

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

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

在apache karaf中,这已经配置,但您也可以自己完成。查看我的karaf tutorial about config admin

如果你想使用普通的felix那么你可以看看karaf解决它的问题。因此,例如在config.properties中有felix fileinstall的设置。那里你必须例如设置包含你的配置的目录。在简单的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