My Spring Boot应用程序的工作原理如下:
for(Stuff stuff : stuffList)
{
try(Session session = sessionFactory.openSession()) {
doStuff(stuff);
} catch(Exception e) {
???
}
}
定期触发。我打开的会话是针对SQLServer的。 "东西"是一组数据,通常很小,但有些数据真的很大。该应用程序运行良好,但有一次我在日志中发现了异常。它是在处理一组大数据时发生的 - 当时操作已运行约77分钟。所述例外是:SQLServerException: Connection reset
,由java.net.SocketException: Connection reset
引起。我无法重现它,因此我不确定故障是在客户端还是在服务器端。但它现在对我来说并不重要 - 我需要知道如何重新建立连接,以便在不重新启动整个应用程序的情况下继续操作,因为在doStuff()
抛出原始异常之后,每个循环的后续迭代 - 使用新会话 - 抛出SQLServerException: The connection is closed
。或者 - 应用程序最终是否自行重新建立连接?