有几种添加配置的方法,因为 OSGi 服务可以通过 ConfigurationAdmin 服务访问配置。蓝图还可以访问其上的属性值。JBoss fuse 使用 karaf,所以可以使用以下方法。
(有一些引述来自http://www.liquid-reality.de/display/liquid/2011/09/23/Karaf+Tutorial+Part+2+-+Using+the+Configuration+Admin+Service)
使用蓝图进行配置
与我们的 bean 类的集成主要是一个简单的 bean 定义,我们在其中定义 title 属性并分配将使用配置管理服务解决的占位符。唯一特别的是init方法。这用于让我们有机会在进行所有更改后做出反应,就像在纯 OSGi 示例中一样。对于蓝图,我们不需要任何 maven 依赖项,因为我们的 Java 代码是纯 Java bean。只需将蓝图上下文放入 OSGI-INF/blueprint 目录并加载蓝图扩展程序即可激活蓝图上下文。由于蓝图总是在 Karaf 中加载,我们不需要其他任何东西。
<cm:property-placeholder persistent-id="ConfigApp" update-strategy="reload" >
<cm:default-properties>
<cm:property name="title" value="Default Title"/>
</cm:default-properties>
</cm:property-placeholder>
<bean id="myApp" init-method="refresh">
<property name="title" value="${title}"></property>
</bean>
在您可以将 cfg 文件(这是一个标准的 java 属性文件)放入 karaf 的 etc 或使用给定的持久 id 的名称(在我们的示例中为 MyApp)部署目录之后。(例如:/etc/ConfigApp.cfg)
title=Configured title