如果mybatis SqlSession长时间未关闭会怎样?

时间:2018-02-28 09:43:26

标签: java database db2 database-connection mybatis

DisconnectNonTransientException为什么会出现?它只发生一次,之后无法再现错误。有什么办法可以避免将来发生错误。更重要的是如何解决不再可重现的问题?

编辑:有关此问题的更多更新。

1.使用mybatis,DB2,tomcat。(尝试访问远程数据库)

2.自上次访问tomcat中的应用程序以来,代码在长时间间隔后首次访问数据源时发生此错误。刷新时,错误消失,应用程序按预期工作。

  1. 每次访问后都会关闭与数据源的连接

  2. 创建的SqlSession未关闭(这是否会导致问题?)

  3. 错误说:“数据库管理器无法接受新请求,已终止所有正在进行的请求,或者由于在目标系统上检测到意外错误情况而终止了此特定请求.ERRORCODE = -4499, SQLSTATE = 58009“

  4. mybatis SqlSession是否有默认超时?

1 个答案:

答案 0 :(得分:0)

  

更重要的是如何解决不再可重现的问题?

在堆栈跟踪中,您可以找到抛出异常的位置。然后调试代码,你可以找到它抛出的原因。

由于代码或数据出错,会出现许多异常。你应该找到错误并修复它。如果您无法在代码中修复它,那么您将从代码中捕获异常,然后决定如何处理它。

如果您无法重现异常,那么您可以跟踪可能引发异常的代码。通过更改日志记录模式显示或写入调试代码。

如果你得到了异常堆栈跟踪,那么你应该知道它抛出时代码是什么。

如果您有一些可能会重现异常的测试,那么您可以编写其他代码来拦截异常。您应该编写此类代码,尝试在测试环境中重现异常。然后你应该知道如何处理它。

相关问题