我将 Apache BasicDataSource 用于公共 DBCP 和连接池:
org.apache.commons.dbcp.BasicDataSource
并通过 Spring 管理它:
org.springframework.jdbc.datasource.DataSourceTransactionManager
如果我的数据库出现故障或出现网络故障,则在将此组合与 Teradata JDBC 驱动程序结合使用时,我会收到以下错误:
08S01 804:I/O 错误,套接字关闭。数据包流写入错误
这正确反映了情况,但问题在于重新连接。当错误被物理解决或数据库恢复并且我的程序尝试查询它时,我仍然会在一段时间内收到相同的错误,例如 20 分钟、几小时、从不。当我重新启动 JVM 或更改连接字符串(例如使用 IP 地址而不是主机名)时,问题就会消失。
DataSource 或 Spring Transaction Manager 中是否有任何设置可以纠正这个问题?或者可能是 TCP/IP 设置?