在 Derby 客户端驱动程序中提供连接超时
Posted
技术标签:
【中文标题】在 Derby 客户端驱动程序中提供连接超时【英文标题】:Providing connection time out in Derby client driver 【发布时间】:2017-11-27 02:32:49 【问题描述】:如果网络出现任何问题,我要求在指定时间内从连接池中检索连接超时。这应该通过 java 应用程序来处理。
基本上,想给datasource.getConnection()
方法超时。
所以经过一番研究,我发现DataSource
的setLoginTimeout(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 驱动程序连接错误:无法创建数据库“示例”