2

我想使用 JDBC4 Connection.isValid而不是验证查询来验证使用 tomcat 7 jdbc 池的 jdbc 连接。

我想知道实现像下面这样的验证器是否就足够了。另外我想知道哪个是一个不错的超时。

提前致谢!费德

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;
      }
}
4

1 回答 1

0

调试器将帮助您解决这种情况:Tomcat / DBCP 连接池不返回原始连接,而是回收底层“真实”连接的包装器/适配器。池通常会自行检查连接(如果需要重新连接),我猜它不允许真正验证。

您在Tomcat 文档中有更多关于池验证参数的信息。另一个交易所涉及包装 Oracle 连接的 JBoss 池,这是一种常见的做法。

于 2014-12-21T10:43:59.623 回答