我遇到來自Tomcat的OutOfMemory錯誤。自從我將Hibernate添加到應用程序後,這個錯誤就開始了。 我沒有使用Spring,所以我爲Hibernate會話做了所有的打開/關閉操作。Tomcat 5.5 OutOfMemory錯誤使用休眠
下面是我正在使用的一些Hibernate配置。我在Java代碼中創建了我的SessionFactory。
hibernate.current_session_context_class=thread
hibernate.connection.jndi.datasource=jdbc/dataSource
我創建了我自己的HibernateUtil類來檢索/保存數據。要初始化這個,我只需調用MyHibernateUtil.initialize()並創建SessionFactory。
這是帶有一個Servlet的基本應用程序。在添加Hibernate之前,這不是一個問題。我也從下面使用MyHibernateUtil.closeSession()關閉會話。
任何人都面對使用Tomcat和Hibernate的Tomcat OutOfMemory問題?
public class MyHibernateUtil{
public static SessionFactory factory = null;
public static AnnotationConfiguration aConfigure = new AnnotationConfiguration();
private static AnnotationConfiguration configure(){
//Add my annotated classes here
...
return aConfigure;
}
public static initialize(){
Configuration configure = MyHibernateUtil.configure();
//I add my Hibernate configuration stuff here.
factory = configure.buildSessionFactory();
}
public static Session getSession(){
Session hibernateSession = factory.getCurrentSession();
return hibernateSession;
}
public static void closeSession(){
MyHibernateUtil.getSession().close();
}
public static Session beginTransaction() {
Session hibernateSession;
hibernateSession = MyHibernateUtil.getSession();
hibernateSession.beginTransaction();
return hibernateSession;
}
public static void commitTransaction() {
MyHibernateUtil.getSession().getTransaction().commit();
}
}
您甚至不需要手動關閉會話,因爲您正在使用'getCurrentSession',它會在事務結束時(提交或回滾)關閉。 – 2010-10-27 15:06:22
但是,當我只做一個簡單的SELECT使用org.hibernate.Criteria說......「criteria.list();」這隻會刷新會話,不提交,更正?在這種情況下,我仍然需要手動關閉會話嗎? – Marquinio 2010-10-27 19:57:30