日期:2014-05-20  浏览次数:20873 次

session未关闭问题
java 中 用的hibernate 。在try外面 调用openSession方法打开session,在finally中关闭session。不知这样是否有session未关闭的风险?有风险能稍微说明下嘛?

------解决方案--------------------
探讨

引用:

别用openSession
用getCurrentSession


兄弟,你跑题了!现在是讨论这个会不会又风险!

------解决方案--------------------
当在finally关闭session的时候出现了异常,那么种种异常可以被忽略,并且该对象的终结过程也会终止,未被捕获的异常会是对象处于破坏的状态,如果另一个线程企图使用这种被破坏的对象,则可能发生任何不确定的行为。正常情况下,未被捕获的异常将会使线程终止,并打印出栈轨迹,但是,如果异常发生在终结方法中,则不会如此,甚至连警告都不会打印出来。,但是如果在finally方法中通过显示的终止方法就可以避免这个问题,session.close()我不太清楚是否是显式的终止方法,如果是,那么就不存在风险
------解决方案--------------------
探讨

当在finally关闭session的时候出现了异常,那么种种异常可以被忽略,并且该对象的终结过程也会终止,未被捕获的异常会是对象处于破坏的状态,如果另一个线程企图使用这种被破坏的对象,则可能发生任何不确定的行为。正常情况下,未被捕获的异常将会使线程终止,并打印出栈轨迹,但是,如果异常发生在终结方法中,则不会如此,甚至连警告都不会打印出来。,但是如果在finally方法中通过显示的终止方法就可以……