如何将外部适当文件配置到OSGI中

时间:2015-11-20 05:45:17

标签: fuseesb jbossfuse blueprint-osgi jboss-esb

我们正在使用Jboss fuse 6.2 along with technical stack blueprint,camel ,activeMQ and Mybatis.

我们需要了解如何在OSGI 中配置属性文件, 据我所知,我们可以配置.cfg文件,但是有没有最简单的方法可以使用spring配置配置。

在我们的代码中,我们正在读取属性文件。使用命名空间ext:proeprtyplaceHolder给出我们给出的bean id和值。 帮助提供是否有任何最简单的方法来读取属性文件

1 个答案:

答案 0 :(得分:1)

有几种方法可以添加配置,因为OSGi服务可以通过ConfigurationAdmin服务访问配置。蓝图还可以通过它访问属性值。 JBoss使用karaf保险丝,因此可以使用以下方法。

(来自http://www.liquid-reality.de/display/liquid/2011/09/23/Karaf+Tutorial+Part+2+-+Using+the+Configuration+Admin+Service的一些引言)

使用蓝图进行配置

与我们的bean类的集成主要是一个简单的bean定义,我们定义title属性并分配将使用config admin服务解析的占位符。唯一特别的东西是init-method。这用于让我们有机会在完成所有更改之后做出反应,就像在纯OSGi示例中一样。 对于蓝图,我们不需要任何maven依赖,因为我们的Java代码是纯Java bean。蓝图上下文只需将其放入OSGI-INF / blueprint目录并加载蓝图扩展器即可激活。由于蓝图总是装在卡拉夫,我们不需要任何其他东西。

<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等或部署目录,其名称为给定的持久标识,在我们的示例中为MyApp。 (例如:/etc/ConfigApp.cfg)

title=Configured title