我想在整个camel路由中保持数据库连接。我已经在路由上定义了名为“stageDataSource”的数据源。如何在处理器“MyDBStageProcessor”中使用相同的数据源,或者更确切地说,使用相同的数据库连接?
我在MyDBStageProcencer中创建了一个新的连接并关闭了它。但是,它在Postgres中最大限度地耗尽了我的连接。因此,我想在整个路由中使用单个连接。
我可以从Exchange对象获取数据库连接吗?
.to("sql:select t.id, vsts_project_id from table_name ?dataSource=stageDataSource")
.to("log:?level=INFO&showBody=true")
.split(body())
.setHeader(Exchange.HTTP_METHOD, constant("GET"))
.setHeader("Authorization", simple("Basic "+encodedToken))
.setHeader("Content-Type", simple("application/json"))
.setHeader("Accept", simple("application/json"))
.setHeader("project_id",simple("${body[vsts_project_id]}"))
.setHeader("team_id",simple("${body[id]}"))
.setBody().simple("${body[vsts_project_id]}/${body[id]}")
.setHeader(Exchange.HTTP_URI, simple(vstsServerURL + "/" + vstsCollectionName + "/${body}/_apis/work/teamsettings/iterations?api-version=5.0"))
.to(vstsServerURL + "/" + vstsCollectionName + "/${body}/_apis/work/teamsettings/iterations?api-version=5.0").convertBodyTo(String.class)
//.to("log:?level=INFO&showBody=true")
.process(new MyDBStageProcessor())
.end()
.to("log:?level=INFO&showBody=true");
---------------------------------------------------------------------------
public class MyDBStageProcessor implements Processor {
@Override
public void process(Exchange exchange) throws Exception {
System.out.println("Inside MyDBStageProcessor");
String input = (String) exchange.getIn().getBody().toString();
//JSONObject jsonObject = new JSONObject(exchange.getIn().getBody());
System.out.println("Body: " + input);
JSONObject jsonObject = new JSONObject(input);
DataSource dataSource = DBCPDataSourceFactory.getDataSource();
Connection dbconn = dataSource.getConnection(); //how to use the same connection from the Camel route?
try {
// do some db work
}
catch(SQLException sqle) {
sqle.printStackTrace();
}
finally {
dbconn.close();
}
}
}
不要这样做,最好使用连池(hikari,c3p0,...)。重用单个连接,你会有很多问题——连接对象不安全,连接超时等。
我遇到了这个问题:对于Vaadin7,我已经配置了我的持久性。xml,下面是代码 http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd“version=“2.0” 当我创建一个新的JPA容器并将其绑定到一个表时,我会在MSSQL活动监视器上看到我的新连接,但如果会话超时或注销,我仍然会在SQL上看到连接。 如果我在应用程序中重新登录,
问题内容: 我目前正在以内存模式测试H2 DB。我建立了一个连接 我想使用dbunit进行一些导入并设置dbUnits db连接 还有我想稍后查询的导入 所以我的问题是,在内存模式下,什么时候可以关闭连接?通常我会做这样的事情 但是在内存中,如果连接关闭,我会丢失数据吗?那么在我结束程序之前,它应该保持打开状态吗? 问题答案: 从H2文档中: 默认情况下,关闭与数据库的最后一个连接会关闭数据库。对
我正在尝试修复与MySQL数据库的连接问题。几个小时后,我的服务器意外地关闭了与MySQL数据库的连接。 这是我的错误代码: 通用域名格式。mysql。jdbc。例外。jdbc4。CommunicationsException:从服务器成功接收到的最后一个数据包是37521865毫秒前。最后一个成功发送到服务器的数据包是37521865毫秒前。长于服务器配置的“等待超时”值。在应用程序中使用之前,
问题内容: 背景: 我正在一个将Django与Postgres数据库一起使用的项目。在某些情况下,我们也会使用mod_wsgi,因为我的一些网络搜索都提到了它。在Web表单提交中,Django视图启动了一个需要大量时间的工作(比用户希望等待的时间还长),因此我们通过后台的系统调用来启动该工作。现在正在运行的作业需要能够读取和写入数据库。因为这项工作需要很长时间,所以我们使用多重处理来并行运行它的各
JsonArrayParser JSON 数组 类名:\Imi\Server\DataParser\JsonArrayParser::class 支持注入的属性: 名称 描述 默认值 options JSON 序列化时的参数 0 depth 设置最大深度。 必须大于0。 512 JsonObjectParser JSON 对象 类名:\Imi\Server\DataParser\JsonObjec
JsonArrayParser JSON 数组 类名:\Imi\Server\DataParser\JsonArrayParser::class 支持注入的属性: 名称 描述 默认值 options JSON 序列化时的参数 0 depth 设置最大深度。 必须大于0。 512 JsonObjectParser JSON 对象 类名:\Imi\Server\DataParser\JsonObjec