根据DBCP文档显示,BasicDataSource不支持setLoginTimeout()。那么我的问题是如何为创建的Connection对象设置LoginTimeout?我知道可以在连接池上设置maxWait,但我的理解是这只适用于当池用尽且您正在等待现有连接释放时。它将不能防止我遇到需要创建新连接,但连接/登录到数据库挂起的情况。
任何帮助都将不胜感激。谢谢。
任何帮助都将不胜感激。谢谢。
@Sap 是正确的,你可以使用 JDBC URL 来添加连接属性,例如:
basicDataSource.setUrl("jdbc:postgresql://192.168.0.100:5432/postgres?connectTimeout=TIME_IN_SECONDS");
TIME_IN_SECONDS
可以是任何整数值。
此外,我们可以使用 BasicDataSource#setConnectionProperties。如参数所述:
在建立新连接时将发送到我们的 JDBC 驱动程序的连接属性。字符串的格式必须为 [propertyName=property;]* 注意 - "user" 和 "password" 属性将被显式传递,因此不需要在此处包含它们。
因此,它可能类似于(并遵循先前的示例):
basicDataSource.setUrl("jdbc:postgresql://192.168.0.100:5432/postgres");
basicDataSource.setConnectionProperties("connectTimeout=TIME_IN_SECONDS");
P.S:
您可以在属性末尾使用;
来添加更多属性。