java - Apache Camel - 从文件读取 JDBC 数据源属性

标签 java jdbc apache-camel blueprint-osgi

我正在使用 Apache Camel,并尝试从此文件加载数据源属性

配置属性:

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 属性中?

最佳答案

你谈论了blueprint.xml和camel,所以我假设你在一个像Karaf/ServiceMix这样的osgi容器中,并且你正在使用Aries Blueprint。

然后您可以使用cm命名空间和property-placeholder。如果您使用camel并希望动态重新加载属性,那么您也可以使用更新策略reload,该策略在配置更改时启动/停止蓝图容器。这将加载带有 pid“datasource”的配置(即,在 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>

关于java - Apache Camel - 从文件读取 JDBC 数据源属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35791785/

相关文章:

java - 远程连接工作时无法在本地从 java 连接到 mysql

OracleDataSource 与 Oracle UCP PoolDataSource

通过 JDBC 从 Spark 中提取表数据时出现 PostgreSQL 错误

java - Apache Camel 中的 XML 对象

java - 将 ImageView 中的图像对齐到右上角

java - 单例和性能

java - 哪种语言最容易和最快地处理 XML 内容?

java - Camunda 中的 "set assignee"和 "delegate task"有什么区别?

java - 使用apache Camel从队列到soap服务器的数据传输

spring - Camel REST 和 Spring Security Java 配置