DBCP连接池登录超时时间

10
根据DBCP文档显示,BasicDataSource不支持setLoginTimeout()。那么我的问题是如何为创建的Connection对象设置LoginTimeout?我知道可以在连接池上设置maxWait,但我的理解是这只适用于当池用尽且您正在等待现有连接释放时。它将不能防止我遇到需要创建新连接,但连接/登录到数据库挂起的情况。
任何帮助都将不胜感激。谢谢。
2个回答

2

您可以通过在URL中添加正确的参数来解决问题。根据您使用的数据库,您可以在JDBC URL中添加其中一个参数。

这里是链接,证实BasicDataSource不支持loginTimeout。

在这篇博客的底部有一张表格列出了连接超时的URL参数。


0

@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:

您可以在属性末尾使用;来添加更多属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接