【发布时间】:2016-04-06 01:56:41
【问题描述】:
使用 Oracle UCP v 12.1.0.2.0 时出现随机“连接已关闭:连接已关闭”错误。看起来连接被标记为已关闭 oracle.ucp.jdbc.proxy.JDBCConnectionProxyFactory#invoke :
if(Clock.isBefore(this.creationTS, this.m_jdbcPooledConnection.getAvailableStartTime()) || Clock.isBefore(this.creationTS, this.m_jdbcPooledConnection.getBorrowedStartTime())) {
this.m_closed = Boolean.valueOf(true);
}
Clock.isBefore(this.creationTS, this.m_jdbcPooledConnection.getAvailableStartTime()) 返回 true。
有人能解释一下这张支票的用途吗?
getAvailableStartTime 是在连接返回池时设置的,creationTS - 是在创建 JDBCConnectionProxyFactory 时设置的,它是在放弃连接时创建的。
isBefore 看起来像这样:
public static boolean isBefore(long time1, long time2) {
return time1 < time2 - 1000L;
}
那么,在不到一秒前返回连接的情况是否是条件?
ps:尝试过验证查询“select 1 from dual” - 无效
【问题讨论】: