gpt4 book ai didi

spring - JDBC 在迭代 ResultSet 时丢失了连接

转载 作者:行者123 更新时间:2023-12-04 05:10:45 24 4
gpt4 key购买 nike

在我的应用程序中,我使用 Spring 和 JdbcDAOSupport 通过 TCP/IP 连接到 MSSQL 数据库。当连接稳定时它工作正常,但是当我在迭代结果集时拔下以太网电缆时,应用程序挂起。它不会抛出任何异常。

JdbcTemplate jdbc = getJdbcTemplate();
return jdbc.query(sql, mapper, someArgs);

其中 mapper 是我自己的 RowMapper 类。我试过使用 Connection 和 PreparedStatement 并没有解决问题。有没有人对此有任何解决方案或有类似的问题?

最佳答案

应用程序挂起,因为 TCP/IP 的设计考虑到了不良连接。当数据包未到达其目的地时,发送方只需使用指数回退重试即可。如果这种行为是不可取的,您可以配置套接字阻塞超时 (SO_TIMEOUT)。

不幸的是,SQL Server JDBC 驱动程序没有配置套接字超时的选项,因此它会无限期地阻塞。

正如内森·休斯 (Nathan Hughes) 在评论中指出的那样,jTDS driver确实有一个配置 socketTimeout 的选项,所以你可以试试那个驱动程序。

关于spring - JDBC 在迭代 ResultSet 时丢失了连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14959648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com