java - 在 Java 中重试 JDBC 连接
问题描述
我正在尝试使用重试逻辑来获取 JDBC 连接,以防出现 SQL 异常,例如:
int counter = 0;
Connection conn = null;
while (null == conn) {
try {
conn = GetConnectionObject;
} catch (SQLException e) {
if (++counter > MAX_RETRY) {
//Log ERROR
break;
}
} finally {
if (null != conn) {
try {
DbUtils.close(conn);
} catch (SQLException e) {
logger.error("Exception while closing the connection object");
}
}
}
}
我目前无法对此进行测试,因此需要一些帮助。
如果我遇到异常,这将正常工作,然后我可以在重试后登录。但是如果我们没有得到异常,它将来到 finally 块并关闭连接。Try-Catch-Finally 在 while 循环内。
所以如果我关闭我的连接,如果到达就流动
而(空== conn)
关闭后我的连接对象会变为空吗?
或者如果有其他方法可以实现重试部分?
解决方案
不,关闭后它不会变为空。使用 Connection.isClosed()而不是while( null== conn)
. 此外,您应该 //Do some task.
摆脱这段代码,因为它的目标是获得 JDBC 连接。
推荐阅读
- oracle - 如何在没有 sysdate 的情况下解决 2019 年以上没有日期条目
- postgresql - PostgreSQL 9.5: Return columns based on input parameter
- python-3.x - 文本选择和文本标题 Pyglet
- javascript - 用javascript检测页面变化?
- ruby - 厨师扩展食谱库(带测试)
- angular - 授权基本标头在 ionic 2 中不起作用
- android - Android Studio 获取错误:添加检查 Internet 连接代码后方法未覆盖或实现超类型中的方法
- ios - 如何在 Swift 中使用时区格式化日期?
- c++ - 具有工会成员的结构可以成为 POD 吗?
- javascript - 如何在 jwplayer 中显示音频文件的媒体控件(播放、暂停)?