日期:2014-05-16  浏览次数:20337 次

MySQL JDBC 5.1.25的一个坑(应该算是BUG)

这是公司的一个重要项目中的真实案例(目前还未证实其它版本是否存在,不过刚看了最新版5.1 .26版本还是没有修复这个操作方式,不过用的小伙伴们要注意了哦):


什么样的情况呢,当在代码中使用connection.close()方法的时候,神奇般的StackOverflow了!没错,这就是JDBC自己导致的死递归,堆栈输出的内容如下所示:


这个堆栈信息可以:

    ConnectionImpl.realClose()

-> ConnectionImpl.closeAllOpenStatements()

->StatementImpl.realClose()

->ResultSetImpl.close()

->ResultSetImpl.realClose()

->RowDataDynamic.close()

->StatementImpl.executeSimpleNonQuery()

->ConnectionImpl.execSQL()

->ConnectionImpl.cleanup()