2017-07-18 98 views
0

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

<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目录中的所有文件(而不仅仅是其中包含的特定属性)?

回答

1

直接获取的句柄配置管理服务,那么你可以通过所有的存储配置集卷(称为“PID”在OSGi的永久ID)

你有几个选项,您可以使用引用它蓝图内置了对你的bundle的bean引用(它有一种遍历配置管理服务的方式)。请参阅此链接的更完整的参考资料之一与蓝图的工作:IBM's Blueprint Reference

或者你可以设置基准,并获得直接连接到配置管理服务

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

那么“configAdmin”豆丝进入你的豆。

+0

伟大的信息。谢谢!后续,如果可以提供帮助:在遍历每个PID(Configuration的getProperties()方法中的属性)时,会出现其他属性:service.pid和felix.fileinstall.filename。任何想法是否有可能只获得文件中实际包含的属性,而不是这些额外的属性(即使它们看起来有用)? –

+0

任何时候=)不可能删除列表中的那些.. felix/karaf添加它们以进行跟踪。 –