保险丝ESB / OSGI /蓝图按字母顺序读取配置文件?

时间:2014-02-07 16:32:45

标签: apache-camel apache-karaf fuseesb blueprint-osgi

我经历了一些相当奇怪的事情,我想知道其他人是否经历过同样的事情......

我目前正在使用jboss fuse(以前的fuse esb)进行项目,我们正在使用配置文件的蓝图。 我们使用属性占位符并在src / main / resources / OSGI-INF / blueprint下有以下文件: blueprint.xml properties.xml中

在blueprint.xml中我们有这样的东西:

<bean id="myBean" class="com.test.MyClass">
    <property name="prop1" value="${my.prop}" />
<∕bean>

然后在properties.xml中我有:

<cm:property-placeholder persistent-id="my.properties" update-strategy="reload">
    <cm:default-properties>
        <cm:property name="my.prop" value="true" />
    </cm:default-properties>
</cm:property-placeholder>

我显然在MyClass中有一个prop1的setter(这是一个String)。

但我看到的是,当我部署它时,prop1设置为“$ {my.prop}”而不是“true”,即变量永远不会被其定义的值替换!

但是现在如果我调用属性文件aaa_properties.xml,它就可以运行!!

这是蓝图容器中的错误吗? 是否有其他人遇到过相同的行为?

感谢您的反馈:)

JM。

1 个答案:

答案 0 :(得分:0)

我找到了一些有关Blueprint Configuration in Fuse ESB

的信息

它声明:

  

如果您需要将蓝图配置文件放在非标准位置(即OSGI-INF / blueprint / * .xml以外的其他位置),您可以在Bundle中指定以逗号分隔的备用位置列表清单中的-Blueprint标题

例如:

Bundle-Blueprint: lib/account.xml, security.bp, cnf/*.xml

我建议,您可以试一试,并在此处指定您的xml文件,自然地按正确的顺序排列。