我创建了赏金来帮助Reznik,但最终通过查看他的代码来弄清楚问题出在哪里。
问题是每次从池中获取新连接时,
protected Connection getDbConnection() throws Exception{ dbConn = dataSource.getConnection(); return dbConn;}该对象
dbConn将更新为新的连接。
例:
T1调用
getDbConnection()
T2调用
getDbConnection()
T1执行查询,处理
resultSet和调用
shutdown()
public void shutdown() { if (this.dbConn != null) this.dbConn.close();}因为
T2更新了对象,所以使用的连接
T2将被关闭
T1
T2尝试使用连接,但该连接已关闭。
这样,不必总是更新连接,而只需返回它,然后添加额外的逻辑来关闭从池中获取的连接。



