db2 如果MyBatis SqlSession长时间未关闭会发生什么情况?

oprakyz7  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(316)

为什么会发生DisconnectNonTransientException?它只发生了一次,并且在那之后无法重现。如何修复以避免将来再次发生此错误?更重要的是,如何修复无法重现的问题?

**edit:**关于此问题的更多更新。

1.正在使用mybatis、DB2、tomcat。(尝试访问远程数据库)
1.自上次访问Tomcat中的应用程序以来,代码在很长时间间隔后首次命中数据源时,会出现此错误。刷新后,错误消失,应用程序按预期工作。
1.每次访问后关闭与数据源的连接
1.创建的SqlSession未关闭(这是否导致问题?)
1.错误说:"The database manager is not able to accept new requests, has terminated all requests in progress, or has terminated this particular request due to unexpected error conditions detected at the target system. ERRORCODE=-4499, SQLSTATE=58009"
mybatis SqlSession是否有默认超时?

zbdgwd5y

zbdgwd5y1#

更重要的是,如何修复不再重现的问题?
在堆栈跟踪中,你可以找到抛出异常的位置,然后调试代码,你可以找到抛出异常的原因。
许多例外状况的发生是因为程式码或数据有问题。您应该找出问题所在并加以修正。如果您无法在发生例外状况的程式码中加以修正,请从程式码中拦截例外状况,然后决定如何行程它。
如果您无法重现异常,则可以跟踪可能引发异常的代码。通过更改日志记录模式来显示或编写调试代码。
如果您得到了异常堆栈跟踪,那么您应该知道抛出代码时代码是什么。
如果您有一些测试可能会重现例外状况,则可以撰写额外的程式码来拦截例外状况。您应该撰写这类程式码,尝试在测试环境中重现例外状况。然后您应该知道如何行程它。

相关问题