z82055116
z82055116
2009-10-20 12:50

OpenSessionInView里的Session不能自动关闭?

已采纳

在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后,在过滤器最后关闭的,如果不关闭的话,他占用的数据库连接就没有关闭,一会连接就不够了。。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • CaiHuajiang CaiHuajiang 12年前
    点赞 评论 复制链接分享
  • wanghaolovezlq wanghaolovezlq 12年前

    应该不可能不关闭的,这就是为了web应用中的惰性加载定制的,

    可能是你的场景什么的是不是有些问题,

    点赞 评论 复制链接分享
  • CaiHuajiang CaiHuajiang 12年前

    OpenSessionInViewFilter过滤器,当然就不会close session,关闭了的话那在页面上怎么读!

    点赞 评论 复制链接分享