【发布时间】: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属性,它完全符合我的要求。
标签: java jdbc connection-pooling derby resin