【发布时间】:2017-07-19 19:35:38
【问题描述】:
我有一个用例,我们必须用集群中一个节点上对另一个节点所做的更改静默替换数据库。另一个节点不应重新启动进程,但应刷新数据库连接,以便在替换数据库文件(SQLite)时获得新的更改。有没有办法在 JOOQ 中做到这一点?我还没有找到任何相关的 API 来刷新数据库连接。
我尝试执行以下操作,但遇到了死锁 -
public static void closeDBConnection(Configuration config) {
try {
Connection connection = getDBConnection(config);
config.connectionProvider().release(connection);
if (!connection.isClosed()) {
connection.close();
}
} catch(SQLException ex) {
// throw new ReAttachException();
}
}
public static Connection getDBConnection(Configuration config) {
return config.connectionProvider().acquire();
}
在调用方法中-
private void reattach(FooRecord record, Configuration config) {
record.detach();
DBUtils.closeDBConnection(config);
DBUtils.getDBConnection(config);
record.attach(config);
}
【问题讨论】: