// 这是代码public List searchStuCourse(Pages pages) { PageList list = null;
Session session = null;
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null; try { session = this.getSession();
list = new PageList();
con = session.connection();
ps = con.prepareStatement(pages.getPageSql()); rs = ps.executeQuery();
EduOrder order = null;
while (rs.next()) {
order = new EduOrder();
order.setCourseId(rs.getLong("course_id"));
order.setCourseName(rs.getString("course_name"));
order.setCreateTime(rs.getDate("course_begintime"));
order.setFinishTime(rs.getDate("course_endtime"));
order.setStatus(rs.getLong("status"));
order.setFourmId(rs.getString("forum_id"));
list.add(order);
}
if (list.size() == 0) {
list.setCurrentPage(pages.getPages() - 1);
} else {
list.setCurrentPage(pages.getPages());// 页数 }
list.setTotalRowCount(pages.getCount());// 总条数
list.calcPageCount(pages.getRowPage());// 每页显示多少 } catch (Exception ex) {
ex.fillInStackTrace();
} finally {
try {
ps.close();
rs.close();
con.close();
} catch (Exception ex) {
ex.fillInStackTrace();
}
this.releaseSession(session);
}
return list;
}

解决方案 »

  1.   

    在关闭连接之后到manager层报的这个错误!
    我用的的是Struts+spring+hiberante框架
    这个spring 配置
     <bean id="txProxyTemplate" abstract="true"
            class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
            <property name="transactionManager"><ref bean="transactionManager"/></property>
            <property name="transactionAttributes">
                <props>
                    <prop key="save*">PROPAGATION_REQUIRED</prop>
                    <prop key="update*">PROPAGATION_REQUIRED</prop>
                    <prop key="remove*">PROPAGATION_REQUIRED</prop>
                    <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
                </props>
            </property>
        </bean>
        <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
            <property name="sessionFactory"><ref bean="sessionFactory"/></property>
        </bean>
        <!--bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean" -->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <property name="dataSource"><ref bean="dataSource"/></property>
            <property name="mappingResources">
                <list>   
                    <value>/EduOrder.hbm.xml</value>
                    <value>/EduCourse.hbm.xml</value>
                    <value>/EduCourseRelation.hbm.xml</value>
                    <value>/EduCourseware.hbm.xml</value>
                    <value>/EduHomeCheck.hbm.xml</value>
                    <value>/EduHomeTitle.hbm.xml</value>
                    <value>/EduHomeWorkInfo.hbm.xml</value>
                     <value>/EduHomeWorkTitle.hbm.xml</value>
                     <value>/EduObject.hbm.xml</value>
                     <value>/EduPolicy.hbm.xml</value>
                     <value>/EsAdPage.hbm.xml</value>
                     <value>/EsAdPosition.hbm.xml</value>
                     <value>/EsAdSetting.hbm.xml</value>
                     <value>/EsForum.hbm.xml</value>
                     <value>/EsNewsColumn.hbm.xml</value>
                     <value>/EsNewsLink.hbm.xml</value>
                     <value>/EsNewsResource.hbm.xml</value>
                     <value>/EsNewsText.hbm.xml</value>
                     <value>/EsOperateLog.hbm.xml</value>
                     <value>/EsStatDay.hbm.xml</value>
                     <value>/EsStatMonth.hbm.xml</value>
                     <value>/EsSyscode.hbm.xml</value>
                     <value>/EsThread.hbm.xml</value>
                     <value>/EsThreadRes.hbm.xml</value>
                     <value>/UmsGroup.hbm.xml</value>
                     <value>/UmsModule.hbm.xml</value>
                     <value>/UmsRole.hbm.xml</value>
                     <value>/UmsRoleModule.hbm.xml</value>
                     <value>/UmsUser.hbm.xml</value>
                     <value>/UmsUserinfo.hbm.xml</value>
                     <value>/UmsUserRole.hbm.xml</value>
                     
                     <value>/EsCourseControl.hbm.xml</value>
                     <value>/EsCourseScore.hbm.xml</value>
                     <value>/EsStuRecord.hbm.xml</value>
                     <value>/EsStuScore.hbm.xml</value>
                      <value>/EsComment.hbm.xml</value>
                     <value>/EsUserFriend.hbm.xml</value>
                     <value>/EsUserGroup.hbm.xml</value>
                     <value>/EsCourseLevel.hbm.xml</value>
                     
                </list>
            </property>
            <property name="hibernateProperties">
                <props>
    <!-- dialet for oralce -->
                    <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>

    <!-- dialet for mysql 
                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>-->
                    <!-- prop key="hibernate.hbm2ddl.auto">update</prop -->
              <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.use_outer_join">true</prop>
            <prop key="hibernate.jdbc.fetch_size">30</prop>
            <prop key="hibernate.jdbc.batch_size">50</prop>
            <!-- prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop -->
                </props>
            </property>
        </bean>
      

  2.   

    小弟经过测试,发现是Spring事物的事
    去掉之后就没有事了.
    小弟对Spring不是很了解.
    请帮忙解决一下
      

  3.   

    connection is closed连接不要CLOSED
      

  4.   

    试试用getHibernateTemplate操作!我以前遇到过你这问题,现在想不起来咯!
      

  5.   

    我的代码用的是纯SQL的,是connection con=this.session.connection();
    获得一个连接.
    如果con不关闭得话,总是占用连接.连接池超出了范围.
      

  6.   

    你可以这样做,将connction全部交由spring去管理,修改如下就不会有问题了:public List searchStuCourse(final Pages pages)

        return getHibernateTemplate().executeFind(new HibernateCallback()
        {
    public Object doInHibernate(Session session) throws HibernateException, SQLException
    {
                    ...              session = this.getSession(); 
                 list = new PageList(); 
                 con = session.connection(); //这样取
                  .............
                 return list; 
             }
         });     
    }