导致tomcat挂掉的问题

来源:互联网 发布:双屏异显 源码 编辑:程序博客网 时间:2024/06/11 18:39

真的不知道该怎样写文章的标题,问题是这样的,前几天开始做权限那块的字段控制,做好后可以跑通,什么都没问题,就是在行控制和列表控制来回点的时候,tomcat就会挂掉,没出现任何的异常。只是重启时报了内存泄露似的异常……郁闷了找了两天,网上搜遍了就是找不到原因。昨晚还是让师兄过来看了下,不到5分钟就找到了问题的所在。哎呀!师兄牛X。

 

我在写代码的时候根本就没有注意hibernate自动生成的dao层的操作数据库的方法,只是调用,根本就没想其他的方法。其实Spring中有两种方法来执行sql或hql操作数据库,分别是getSession()和getHibernateTemplate()

 

使用getSession()必须继承sessionFactory,并且使用getSession(),Spring会把原始的Session给你,你在使用完后必须要自己把session close掉,不然在频繁操作数据库时会占用到所有的链接。也不会对声明式事务进行相应的管理。

 

使用getHibernateTemplate()方法必须继承 HibernateDaoSupport当然包括sessionFactory,它是spring封装好了的,由spring框架帮我们管理session,并且添加了对声明式事务的管理。

 

我就是在dao中使用了getSession()操作数据库并没有手动的去关闭session,而导致tomcat挂掉的。并且这种错误根本就不报任何的异常,如果不对getSession()和getHibernateTemplate()有一定的了解,根本就不会能够想到是这里出的问题,并且这种具体的问题,在网上也没有现成的资料可以参考,真的很感谢师兄啊……

 

以下是tomcat重启扑捉到的,贴上备以后查看