tomcat 7 jdbc连接池和jdbc4验证
Posted
技术标签:
【中文标题】tomcat 7 jdbc连接池和jdbc4验证【英文标题】:tomcat 7 jdbc connection pool and jdbc4 validation 【发布时间】:2014-12-19 03:52:02 【问题描述】:我想使用 JDBC4 Connection.isValid 而不是验证查询来验证使用 tomcat 7 jdbc 池的 jdbc 连接。
我想知道像下面这样实现Validator 是否就足够了。我也想知道哪个是一个不错的超时。
提前致谢! 费德
PS:我使用的是 oracle 11g。
public class MyValidator implements Validator
public static final int DEFAULT_TIMEOUT = 5;
public boolean validate(final Connection c, final int validateAction)
try
return c.isValid(DEFAULT_TIMEOUT);
catch(Exception e)
// LOG e
return false;
【问题讨论】:
bz.apache.org/bugzilla/show_bug.cgi?id=48817。我无法从报告中判断这是否已实施,但您肯定不是第一个提出这个问题的人。 【参考方案1】:调试器可以帮助您解决这种情况:Tomcat / DBCP 连接池不返回原始连接,而是返回一个包装器/适配器,用于回收底层的“真实”连接。池通常会自行检查连接(如果需要重新连接),我猜它不允许真正验证。
您在Tomcat doc 中有更多关于池验证参数的信息。 Another exchange 处理包装 Oracle 连接的 JBoss 池,这是一种常见的做法。
【讨论】:
以上是关于tomcat 7 jdbc连接池和jdbc4验证的主要内容,如果未能解决你的问题,请参考以下文章
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException MySQL + Apache Tomcat 7
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure