比如
finally {
if(session!=null){
session.close()
}
}
楼主因为在hibernate中是Threadlocal管理session的你的session.close()后,Threadlocal的还没有马上请空的,如果你hibernate的session资源不够就很容易产生Too many connections的异常,可以这样解决都可以试试1添加一个连接池配置文件,增加session线程池的线程数,通过设置
<property name="hibernate.connection.provider_class">
org.hibernate.connection.C3P0ConnectionProvider
</property>
<property name="hibernate.c3p0.max_size">30</property> <——————可以设置大一点
<property name="hibernate.c3p0.min_size">1</property>
<property name="hibernate.c3p0.timeout">1800</property>
<property name="hibernate.c3p0.max_statements">1000</property>
<property name="hibernate.c3p0.idle_test_period">30000</property>
<property name="hibernate.c3p0.acquire_increment">1</property>
<property name="hibernate.c3p0.validate">false</property>
2用楼上的方法,将session.close()修改为:sessionFactory.closeSession(),因为用sessionFactory关闭session会清空ThreadLocal的session
试试吧楼主如果不行,可能还是某一个session的问题
--------------------------------------------
没写对,不好意思是hibernateSessionFactory.closeSession()
_____________________________________________是不是你经常要用到hibernate插入大量数据?
是提示out of memory吗
因为hibernate使用缓存插入数据的,当你save时
它只是把数据保存在session中,没有马上插入,所以经常插入大量数据会造成内存不够
______________________________________________-
不过有解决方法的楼主
大兄弟,你这应该是没搞清楚状况吧,这不是数据库连接关闭了,你是侦听都挂了。
正常来说Session关闭是不会对数据库造成影响,检查Spring,你可能通过Spring在
Session关闭前做了一些别的事情。好好检查一下吧。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)