我让DBCP为给定的h2数据库管理连接,该数据库在夜间需要关闭并重新启动。所用的时间相当快,在这段时间内,我想暂停DBCP的出借连接,然后当我和完成恢复池。
不过,我可以考虑使用不同的连接池;与c3p0和HikariCP一起使用确实会在其他地方造成问题。
我希望实现的是暂停借出,关闭数据库,然后用新的副本替换数据库文件,然后恢复池,这将自动重新启动h2数据库。
发布于 2016-05-16 05:44:13
BoneCP可能有一个功能,允许在底层数据库重新启动时进行这种类型的扩展断开,因为如果连接失败,它可以重放事务,但这意味着应用程序已被编码为与事务一起操作。我自己也不知道这个特性,但是0.6.5的发行说明说明了这个特性
主要特性是事务的自动重放,从而保存事务上的所有活动(从BEGIN transaction到COMMIT/ROLLBACK)。如果发生可恢复的异常,例如,如果数据库发生故障或网络中断,池将自动回放所有事务,让您的应用程序自动优雅地恢复。
否则,最好的选择是将连接管理转移到应用程序代码中,这样当连接最终被报告为断开时,应用程序可以暂停并重试,然后再出错。
https://stackoverflow.com/questions/37107826
复制相似问题