10

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

任何帮助表示赞赏。谢谢。

4

2 回答 2

2

那么总有一个选项可以向 URL 添加正确的参数。根据您使用的数据库,您可以在 JDBC url 中添加参数之一。

这是确认 BasicDataSource 不支持 loginTimeout的链接

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

于 2014-10-21T06:56:41.520 回答
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:

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

于 2018-07-22T19:00:21.837 回答