【问题标题】:Maintain db connection inside Camel Route保持骆驼路线内的数据库连接
【发布时间】:2015-04-06 05:57:22
【问题描述】:

要求:我们在 java 应用程序中创建一个数据库连接。我们需要在整个 Java 应用程序上通过相同的连接运行所有语句。 问题:一旦在 Camel 路由中传递了创建的数据源,它显然会创建一个新的连接。

我正在使用创建与 Oracle 数据库的连接的 DataSource 对象。在这个连接上,我运行了几个语句。

Connection myConn = myDBDatasource.getConnection()

作为第二部分,我将创建的数据源用于我的骆驼路线

SimpleRegistry reg = new SimpleRegistry();
reg.put("myDBDatasource", myDBDatasource);

在我的路由中,我使用一个 bean 创建一个查询,该查询最终结束于我的数据库。

from("direct:start").bean(MyClass.class,
"processData").to("jdbc:oracleDataSource?resetAutoCommit=false");

所以在这种情况下的问题是我在开始时创建了一个新连接,我想在整个应用程序中使用它。一旦 Camel 完成到数据库的路由,它就会创建一个新的。

问题 1:有什么方法可以在 Camel RouteBuilder 中以某种方式保持相同的 Connection (myConn) 吗? 问题 2:我的数据源已设置为 DefaultAutoCommit(false) 。会不会是 RouteBuilder Camel 内部忽略了这一点并仍然提交查询?

【问题讨论】:

    标签: java oracle jdbc apache-camel datasource


    【解决方案1】:

    我终于创建了自己的自定义数据源类并实现了 Spring 的 SingleConnectionDataSource 中的一些部分。

    【讨论】:

      【解决方案2】:

      您可以使用 Spring 的 SingleConnectionDataSource 或定制一个。如果您想阻止 Camel 提交,请使用连接代理并禁用 commit()。

      【讨论】:

      • 我没有使用 Spring。如果不在我的项目中添加额外的库,还有其他可能的解决方案吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-05
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多