阅读etc目录中的Karaf文件

时间:2017-07-18 15:38:58

标签: osgi apache-karaf blueprint

我正在运行Karaf,并有一个蓝图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>

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

然后将'configAdmin'bean连接到你的bean。