在Struts2+spring+hibernate集成的项目里,用到了spring的OpenSessionInViewFilter过滤器,来延长Session的生命周期,但在使用过程中,lasy加载正常是可以用的,就是session不会自动关闭。我查看源码里有下面一段
[code="java"]
public static void closeSession(Session session) {
if (session != null) {
logger.debug("Closing Hibernate Session");
try {
session.close();
}
catch (HibernateException ex) {
logger.debug("Could not close Hibernate Session", ex);
}
catch (Throwable ex) {
logger.debug("Unexpected exception on closing Hibernate Session", ex);
}
}
}
[/code]
上面的logger根本就没有输入,也就是说没有进入这个地方
[code="java"]
logger.debug("Closing single Hibernate Session in OpenSessionInViewFilter");
closeSession(sessionHolder.getSession(), sessionFactory);
[/code]
只运行了上面那个logger
不清楚是为什么,向高手请教~~~
[b]问题补充:[/b]
他是在完成response后,在过滤器最后关闭的,如果不关闭的话,他占用的数据库连接就没有关闭,一会连接就不够了。。
http://www.iteye.com/topic/186068
OpenSessionInViewFilter过滤器,当然就不会close session,关闭了的话那在页面上怎么读!
应该不可能不关闭的,这就是为了web应用中的惰性加载定制的,
可能是你的场景什么的是不是有些问题,