Osgi 读取etc目录中的Karaf文件

Osgi 读取etc目录中的Karaf文件,osgi,apache-karaf,blueprint,Osgi,Apache Karaf,Blueprint,我正在运行Karaf,有一个blueprint xml文件,可以访问Karaf etc目录(…apache Karaf/etc/SomeProperties.properties)中的一个文件,以便在捆绑包中使用: <ext:property-placeholder placeholder-prefix="$[" placeholder-suffix="]"> <ext:location>file:etc/SomeProperties.properties<

我正在运行Karaf,有一个blueprint xml文件,可以访问Karaf etc目录(…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>

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

具体来说,是否有方法指定目录位置而不是文件位置?并对该目录中的文件类型进行额外筛选


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

直接获得配置管理服务的句柄,然后可以滚动所有存储的配置集(对于OSGi中的持久ID,称为“pid”)

您有两个选项,可以使用blueprint内置bean引用将其引用到您的bundle(它可以遍历到配置管理服务)。有关使用blueprint的更完整引用之一,请参阅此链接:

或者您可以设置一个引用并直接连接到配置管理服务

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


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

非常好的信息。谢谢!如果您能提供帮助,请进行后续操作:在迭代每个PID中的属性时(getProperties()配置方法),将显示其他属性:service.pid&felix.fileinstall.filename。是否可以只获取文件中实际包含的属性,而不获取这些附加属性(即使它们看起来很有用)?Anytime=)无法从列表中删除这些属性。。felix/karaf添加它们以进行跟踪。