在 Derby 客户端驱动程序中提供连接超时

Posted

技术标签:

【中文标题】在 Derby 客户端驱动程序中提供连接超时【英文标题】:Providing connection time out in Derby client driver 【发布时间】:2017-11-27 02:32:49 【问题描述】:

如果网络出现任何问题,我要求在指定时间内从连接池中检索连接超时。这应该通过 java 应用程序来处理。

基本上,想给datasource.getConnection()方法超时。

所以经过一番研究,我发现DataSourcesetLoginTimeout(int seconds) 方法具有此功能,以便在指定秒内无法建立数据库连接时发出通知。

我在OracleConnectionPoolDataSource 上应用了这个,它工作正常,但对于 Derby 客户端驱动程序,它给出了异常, org.apache.derby.jdbc.ClientDriver 没有任何这样的属性 loginTimeout。

寻找您的友好回复,如果有任何其他方法可以根据我的要求或我需要添加/缺少的任何内容或与此相关的任何信息,请告诉我。

服务器 - Resin 3.0

【问题讨论】:

Derby驱动没有这个属性,建议在OS层面配置TCP keepalive。 Driver 不是DataSource,也许您正在寻找DriverManager.setLoginTimeout Hi Mark,实际上我们在应用程序中有不同的第三方api,所以如果我们改变操作系统级别,也会有影响。 您好,用于 Derby 客户端驱动程序的简单 JDBC DriverManager.setLoginTimeout 方法不起作用。与 apache 组提到的链接相同,issues.apache.org/jira/browse/DERBY-2026,文件名 logintimeout.java.. 请帮助我。 经过很长时间重新处理这个问题,终于能够通过使用c3p0连接池而不是使用derby的数据源来实现这一点。C3P0具有checkConnectionTimeout属性,它完全符合我的要求。 【参考方案1】:

最终能够通过使用 c3p0 连接池而不是使用 derby 的数据源来实现这一点。C3P0 具有 checkoutTimeout 属性,该属性完全符合此要求。

【讨论】:

以上是关于在 Derby 客户端驱动程序中提供连接超时的主要内容,如果未能解决你的问题,请参考以下文章

Derby 客户端 jdbc 驱动程序连接错误:无法创建数据库“示例”

无法同时从两个进程连接 derby 数据库

Derby 数据库连接问题

无法在 MyEclipse 中使用 struts 连接 Derby 数据库

找不到 Derby 数据库,如何在 Java 中连接

SpringCloud(15)——OpenFeign超时控制