首页 > 解决方案 > 如何从属性文件中读取值以设置 Spring 或 Blueprint xml 标记的属性值

问题描述

我正在使用 Apache 骆驼蓝图 xml 文件来定义使用 JBoss 熔断器容器的骆驼路线。

但是那些骆驼路由需要数据库连接来执行一些操作,为了连接数据库,我们使用“参考”来查找从同一个 jboss fuse 容器中的其他包或蓝图导出的 osgi 服务。

现在要获得参考,我正在使用这样的参考标签:

<reference id="dataSource.ref" interface="javax.sql.DataSource" filter="(osgi.jndi.service.name=${dataSource.jndi})"/>

dataSource.jndi 在属性/配置文件中正确配置,我们能够从同一属性文件中读取其他属性。

问题是我们是否在标签内使用这些属性,例如这个代理详细信息:

<bean class="org.apache.activemq.ActiveMQConnectionFactory" id="jmsConnectionFactory">
    <property name="brokerURL" value="${broker.url}"/>
    <property name="userName" value="${broker.user}"/>
    <property name="password" value="${broker.password}"/>
</bean>

它工作得很好,但是在读取引用标记的过滤器属性内的属性值 dataSource.jndi 时不起作用。

我尝试了多种可能性,例如:

但是没有任何效果,而且我总是遇到以下错误:

由于未解决的依赖关系而无法启动蓝图 [(&(osgi.jndi.service.name=${dataSource.jndi})(objectClass=javax.sql.DataSource))]

由于未解决的依赖关系而无法启动蓝图 [(&(osgi.jndi.service.name=${{dataSource.jndi}})(objectClass=javax.sql.DataSource))]

由于未解决的依赖关系而无法启动蓝图 [(&(osgi.jndi.service.name={{dataSource.jndi}})(objectClass=javax.sql.DataSource))]

所以唯一的问题是我们如何使用属性文件中的值用于弹簧或蓝图标签的属性,如果我使用常量值一切正常,但我们不需要常量值。

标签: propertiesapache-cameljbossfusespring-camelblueprint

解决方案


推荐阅读