在DruidAbstractDataSource中 的 createPhysicalConnection 方法中, if (driver != null && "org.postgresql.Driver".equals(driver.getClass().getName())) { if (connectTimeoutStr == null) { connectTimeoutStr = Integer.toString(connectTimeout); } physicalConnectProperties.put("loginTimeout", connectTimeoutStr);
if (socketTimeoutSr == null) {
socketTimeoutSr = Integer.toString(socketTimeout);
}
physicalConnectProperties.put("socketTimeout", socketTimeoutSr);
}
当数据库时 postgresql时,使用connectTimeout的值传递 loginTimeout 属性至 postgresql的Driver中,用以创建物理连接,但org.postgresql.Driver 中会将 loginTimeout认为是以秒单位,详见方法 Driver中的 private static long timeout(Properties props) 方法