我遇到会话问题,关闭运行此应用程序时会产生什么影响,以及如果生产中有什么影响。
我在我的生产服务器中面临两个问题,它在应用程序使用期间消耗大量内存,只需启动800MB左右。
一段时间后,它会出现内存错误并导致服务器崩溃
我正在使用tomcat服务器来部署我的应用程序
我的代码就是这个
@Transactional
public Collection list(String queryString, Object[] value) throws Exception {
Session session = this.sessionFactory.getCurrentSession();
Query query = session.createQuery(queryString);
return query.list();
}
@Transactional
public Collection list(String queryString, Object[] value) throws Exception {
Session session = this.sessionFactory.openSession();
Query query = session.createQuery(queryString);
return query.list();
}
如果我关闭会话,那么延迟初始化会给会话已经关闭的错误。
请帮我解决这个问题。 我们如何通过spring配置来关注hibernate中的open会话 我正在使用hibernate 3.6.1和spring 3.0.6。
答案 0 :(得分:1)
将VM参数添加到服务器以避免outofmemory错误
-Xms256m -Xmx1024m -XX:+DisableExplicitGC -Dcom.sun.management.jmxremote
-XX:PermSize=256m -XX:MaxPermSize=512m
并添加
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
代码上面的方法严格处理事务而不用担心Session对象