我已经通过使用LifecycleListener在启动时创建会话工厂的单例实例解决了该问题。
import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleEvent;
import org.apache.catalina.LifecycleListener;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class SessionFactorys implements LifecycleListener {
private static SessionFactory sessionFactory;
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
@Override
public void lifecycleEvent(LifecycleEvent arg0) {
if (Lifecycle.AFTER_START_EVENT==arg0.getType()) {
sessionFactory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
}
if (Lifecycle.BEFORE_STOP_EVENT==arg0.getType()) {
sessionFactory.close();
}
}
}