读取 etc 目录下的 Karaf 文件

Read Karaf Files in etc Directory

我是 运行 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 结尾的所有文件(不单独命名任何文件)。这能做到吗?

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

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

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

您有几个选项,您可以使用对您的包的蓝图内置 bean 引用来引用它(它有一种遍历到 Config Admin Service 的方法)。有关使用蓝图的更完整参考之一,请参阅此 link:IBM's Blueprint Reference

或者您可以设置引用并直接连接到 Config Admin 服务

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

然后将 'configAdmin' bean 连接到您的 bean 中。