mybatis数据源连接池获取连接流程popConnection()
2021-08-26 17:52:41 46 举报
mybatis数据源连接池获取连接流程
作者其他创作
大纲/内容
conn=null
否
空闲连接是否达上限
state.wait()阻塞等待
2.回收连接流程pushConnection()
检测idleConnections是否有空闲连接
是
判断连接是否有效
1.超时统计2.移除超时连接3.回滚原超时连接事务(如果事务未提交)
获取空闲连接
1.如果遗留事务,回滚2.统计信息更新3.连接添加到活跃连接
活跃连接第一个元素是否超时
exception
结束
conn.isValid()
创建连接
1.获取连接流程popConnection()
移除活跃连接中的此连接
检测activeConnections里的活跃连接是否达到最大连接数
1.遗留事务回滚2.关闭真实连接3.conn.invalidate();
1.统计2.conn=null3.超过重试次数抛异常
1.遗留事务回滚2.基于此连接newConn,刷新连接状态3.conn.invalidate();4.state.notifyAll();
开始
return conn
0 条评论
下一页