getinfoimpl里面有三个方法是用来获得数据的
public class GetInfoDaoImpl implements GetInfoDao{
private Session session=HibernateSessionFactory.getSession();
public List getGoods() {
String hql="from PfxGoods order";
Query query=session.createQuery(hql);
HibernateSessionFactory.closeSession();
List list=query.list();
return list;
}
public List getPrice() {
String hql="from PfxUrl order by gid,companyId";
Query query=session.createQuery(hql);
HibernateSessionFactory.closeSession();
List list=query.list();
return list;
}
public List getCompany() {
String hql="from PfxCompany order";
Query query=session.createQuery(hql);
HibernateSessionFactory.closeSession();
List list=query.list();
return list;
}
}
三个方法和上面的一样都是select的,这三个方法在initservlet类的init方法中被调用
运行tomcat就报错了,请高手指教。分数不多望谅解

解决方案 »

  1.   

    PS:这是个小项目,只用到了struts+hibernate
      

  2.   

    javax.servlet.ServletException: org.hibernate.SessionException: Session is closed!
    org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)root causeorg.hibernate.SessionException: Session is closed!
    org.hibernate.impl.AbstractSessionImpl.errorIfClosed(AbstractSessionImpl.java:49)
    org.hibernate.impl.SessionImpl.list(SessionImpl.java:1110)
    org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
    com.profex.dao.impl.GetInfoDaoImpl.getUser(GetInfoDaoImpl.java:69)
    com.profex.action.LoginAction.execute(LoginAction.java:21)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
      

  3.   

    HibernateSessionFactory 获得session 使用了ThreadLocal, 所以你查询出第一个之后,同一方法当然还是同一个线程再次调用查询,就报session is closed
      

  4.   

    Query query=session.createQuery(hql);
    HibernateSessionFactory.closeSession();//这里居然就关了?
    List list=query.list();//这里是查询,获得数据!楼主 你仔细看看!还没查 就关了  能不报错吗 ? 
      

  5.   

    是谁让你把session关闭的
    session是不能够关闭的
      

  6.   

    HibernateSessionFactory.closeSession();
    List list=query.list();
    上面两句先后次序要换过来,你先关了SESSION,再LIST,当然有问题啦。