在Camel Route中维护数据库连接

时间:2015-02-06 06:33:53

标签: java oracle jdbc apache-camel datasource

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

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

Connection myConn = myDBDatasource.getConnection()

作为第二部分,我使用创建的数据源作为我的Camel路径

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

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

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

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

问题1 :有没有办法在Camel RouteBuilder中以某种方式维护相同的Connection(myConn)? 问题2 :我的数据源已设置为DefaultAutoCommit( false )。可能是在RouteBuilder里面Camel忽略了这个并仍然提交查询吗?

2 个答案:

答案 0 :(得分:1)

您可以使用Spring SingleConnectionDataSource或进行自定义。如果要阻止Camel提交,请使用Connection代理并禁用commit()。

答案 1 :(得分:0)

我最终创建了自己的Custom数据源类,并实现了Spring的SingleConnectionDataSource中的一些部分。

相关问题