【问题标题】:Read Karaf Files in etc Directory读取 etc 目录中的 Karaf 文件
【发布时间】:2017-07-18 15:38:57
【问题描述】:

我正在运行 Karaf,并且有一个蓝图 xml 文件,该文件可以从 Karaf 等目录 (...apache-karaf/etc/SomeProperties.properties) 中访问一个文件以用于捆绑:

<ext:property-placeholder placeholder-prefix="$[" placeholder-suffix="]">
    <ext:location>file:etc/SomeProperties.properties</ext:location>
</ext:property-placeholder>

<bean id="SomeBean" class="impl.com.package.SomeBean"
      init-method="init" destroy-method="destroy">
    <property name="beanvariable1" value="$[property1key]"/>
    <property name="beanvariable2" value="$[property2key]"/>
</bean>

但是,我不仅想访问该特定文件中的所有属性,还想访问同一个 karaf/etc 目录中以 .cfg 结尾的所有文件(不单独命名任何文件)。这个可以吗?

具体来说,有没有办法指定目录位置而不是文件位置?并额外过滤该目录中的文件类型?

或者,就此而言,是否有任何方法(使用蓝图或其他方式)从在 Karaf 中运行的包中访问 apache-karaf/etc 目录中的所有文件(不仅仅是其中包含的特定属性)?

【问题讨论】:

    标签: osgi apache-karaf blueprint


    【解决方案1】:

    直接获取配置管理服务的句柄,然后您可以遍历所有存储的配置集(在 OSGi 中称为持久 ID 的“pid”)

    您有几个选项,您可以使用 blueprint 内置 bean 引用来引用它到您的包(它有一种遍历配置管理服务的方法)。有关使用蓝图的更完整参考资料之一,请参阅此链接:IBM's Blueprint Reference

    或者您可以设置参考并直接连接到配置管理服务

    <reference id="configAdmin" interface="org.osgi.service.cm.ConfigurationAdmin">
    

    然后将“configAdmin”bean 连接到您的 bean。

    【讨论】:

    • 很棒的信息。谢谢!如果您可以提供帮助,请进行后续操作:当迭代每个 PID 中的属性时(配置的 getProperties() 方法),会出现其他属性:service.pid & felix.fileinstall.filename。知道是否可以仅获取文件中实际包含的属性,而不获取这些附加属性(即使它们看起来很有用)?
    • Anytime =) 无法从列表中删除它们。felix/karaf 添加它们以进行跟踪。
    猜你喜欢
    • 2018-07-23
    • 2012-06-25
    • 2014-03-05
    • 2012-04-09
    • 2021-03-03
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    相关资源
    最近更新 更多