根据DBCP Document,BasicDataSource不支持setLoginTimeout()。我的问题是如何设置LoginTimeout来创建Connection对象?我知道我可以在池上设置maxWait,但我的理解是,这只会在池耗尽并且等待现有连接释放时使用。它不会让我免于需要创建新连接的情况,但是连接/登录数据库会挂起。
感谢任何帮助。感谢。
答案 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:
您可以在属性的末尾使用;
添加更多属性。