要求:我们在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忽略了这个并仍然提交查询吗?
答案 0 :(得分:1)
您可以使用Spring SingleConnectionDataSource或进行自定义。如果要阻止Camel提交,请使用Connection代理并禁用commit()。
答案 1 :(得分:0)
我最终创建了自己的Custom数据源类,并实现了Spring的SingleConnectionDataSource中的一些部分。