当数据库位于单独的盒子上并且之间有防火墙设置为超时空闲连接时,我曾遇到过类似的问题。
在某些情况下,防火墙以JDBC端无法检测到的方式切断连接,尝试使用它会导致不确定的阻塞。
在我的情况下,这是一个自定义连接池,该连接池在从连接池返回连接之前先向连接发送了一个测试查询。我将此测试查询配置为具有超时(使用Statement.setQueryTimeout),以便它不会无限期地阻塞。

当数据库位于单独的盒子上并且之间有防火墙设置为超时空闲连接时,我曾遇到过类似的问题。
在某些情况下,防火墙以JDBC端无法检测到的方式切断连接,尝试使用它会导致不确定的阻塞。
在我的情况下,这是一个自定义连接池,该连接池在从连接池返回连接之前先向连接发送了一个测试查询。我将此测试查询配置为具有超时(使用Statement.setQueryTimeout),以便它不会无限期地阻塞。