Apache的骆驼 - 从文件

问题描述:

读的JDBC DataSource属性我使用Apache的骆驼,我会尝试从这个文件加载数据源属性Apache的骆驼 - 从文件

config.properties:

url = my_url 
user = user_name 
password = user_pass 

这是数据源(blueprint.xml):

<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource"> 
     <property name="URL" value="my_url"/> 
     <property name="user" value="user_name"/> 
     <property name="password" value="user_pass"/> 
    </bean> 

如何从config.properties读取值和将考勤分成dataSource属性?

+0

如果你的问题是真的关于Spring,那么这个问题不应该用'blueprint-osgi'注释。 – Ralf

+0

在我的文章中看到Spring?! – zied123456

+0

不是,但第一个答案假设你使用Spring并且你没有反对。 (假设你是最后投票的人。) – Ralf

你说的是blueprint.xml和camel,所以我假设你在一个像Karaf/ServiceMix这样的osgi容器中,并且你正在使用Aries Blueprint。您可以使用cm名称空间和property-placeholder。如果您使用camel并希望动态重新加载属性,那么您也可以使用更新策略reload,它在配置更改时启动/停止蓝图容器。这将加载与PID“数据源”配置(即karaf,文件etc/datasource.cfg):

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
      xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.2.0" 
      xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.2.0"> 

    <cm:cm-properties id="myProps" persistent-id="datasource" update-strategy="reload"/> 

    <bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource"> 
     <property name="URL" value="${url}"/> 
     <property name="user" value="${user}"/> 
     <property name="password" value="${password}"/> 
    </bean> 
</blueprint> 

如果你想使用您的配置文件,而无需使用ConfigurationAdmin或动态刷新你的包,那么你可以使用ext命名空间:

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
      xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.2.0"> 

    <ext:property-placeholder> 
     <ext:location>file:config.properties</ext:location> 
    </ext:property-placeholder> 

    <bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource"> 
      <property name="URL" value="${url}"/> 
      <property name="user" value="${user}"/> 
      <property name="password" value="${password}"/> 
    </bean> 
</blueprint> 

根据代码我假设你可能使用spring作为容器。春季一般解决方法是使用PropertyPlaceHolder,配置将是这样的:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location"> 
     <value>config.properties</value> 
    </property> 
</bean> 

<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource"> 
    <property name="URL" value="${jdbc.myUrl}"/> 
    <property name="user" value="${jdbc.user_name}"/> 
    <property name="password" value="${jdbc.user_pass}"/> 
</bean> 

请检查example了解详情。

+0

blueprint受到Spring的强烈启发,但它不兼容;-) –