DBCP连接池loginTimeout

时间:2012-07-03 08:12:12

标签: database oracle apache jdbc connection

根据DBCP Document,BasicDataSource不支持setLoginTimeout()。我的问题是如何设置LoginTimeout来创建Connection对象?我知道我可以在池上设置maxWait,但我的理解是,这只会在池耗尽并且等待现有连接释放时使用。它不会让我免于需要创建新连接的情况,但是连接/登录数据库会挂起。

感谢任何帮助。感谢。

2 个答案:

答案 0 :(得分:1)

总是有一个选项可以为URL添加正确的参数。根据您使用的DB,您可以在JDBC URL中添加其中一个参数。

Here is the link确认BasicDataSource不支持loginTimeout

And at the bottom of this blog有一个表格列出了连接超时的URL参数。

答案 1 :(得分: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;] *   注意-“用户”和“密码”属性将显式传递,因此不需要在此处包含它们。

因此,它可能类似于(并遵循前面的示例):

basicDataSource.setUrl("jdbc:postgresql://192.168.0.100:5432/postgres");
basicDataSource.setConnectionProperties("connectTimeout=TIME_IN_SECONDS");

PS:

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