网上有很多同样的报错,也有很多的解决方法。具体说来也就三个方法。
(1)重启服务器 这种方法有用,但是下次还是会出现
(2)写出健壮的代码,使用try{}catch{}finally 语句 确保关闭每一个session
(3)配置数据库连接池
网上的数据库连接池都是在tomcat的配置文件下设置的,我们做的项目连接池是在spring里面配置的,是基于SSH框架,有spring来管理hibernate,所以该配置必须卸载spring或者hibernate里面,如下
<!-- step 1 加载数据库配置文件 -->
<span style="white-space:pre"> </span> <bean id="config"
<span style="white-space:pre"> </span>class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<span style="white-space:pre"> </span><property name="locations">
<span style="white-space:pre"> </span><value>classpath:SqlServer.properties</value>
<span style="white-space:pre"> </span></property>
<span style="white-space:pre"> </span> </bean>
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span><!-- step 2 获取数据源 dataSource -->
<span style="white-space:pre"> </span><bean id="dataSource" destroy-method="close"
<span style="white-space:pre"> </span>class="org.apache.commons.dbcp.BasicDataSource">
<span style="white-space:pre"> </span><property name="driverClassName" value="${jdbc.driverClassName}" />
<span style="white-space:pre"> </span><property name="url" value="${jdbc.url}" />
<span style="white-space:pre"> </span><property name="username" value="${jdbc.username}" />
<span style="white-space:pre"> </span><property name="password" value="${jdbc.password}" />
<span style="white-space:pre"> </span><!-- 以下设置不是必须的 2014年8月23日16:56:07 杨稳 添加的注释 -->
<span style="white-space:pre"> </span><!--initialSize: 初始化连接-->
<span style="white-space:pre"> </span><property name="initialSize" value="10" />
<span style="white-space:pre"> </span><!--maxActive: 最大连接数量-->
<span style="white-space:pre"> </span><property name="maxActive" value="200" />
<span style="white-space:pre"> </span><!--maxIdle: 最大空闲连接-->
<span style="white-space:pre"> </span><property name="maxIdle" value="40" />
<span style="white-space:pre"> </span><!--minIdle: 最小空闲连接-->
<span style="white-space:pre"> </span><property name="minIdle" value="5"/>
<span style="white-space:pre"> </span><!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒-->
<span style="white-space:pre"> </span><property name="maxWait" value="9000" />
<span style="white-space:pre"> </span><!--连接池创建的连接的默认的auto-commit状态-->
<span style="white-space:pre"> </span><property name="defaultAutoCommit" value="true" />
<span style="white-space:pre"> </span><!-- 以上设置不是必须的 -->
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span><!-- <span style="color:#ff0000;">此处为本博客配置 </span> 设置连接池属性 使其自动断开连接 -->
<span style="white-space:pre"> </span><property name="removeAbandoned" value="true" /> <!-- <span style="color:#ff6666;">设置自动断开session链接</span> -->
<span style="white-space:pre"> </span><property name="removeAbandonedTimeout" value="100" /> <!-- <span style="color:#ff6666;">设置session没有响应自动关闭的时间</span> -->
<span style="white-space:pre"> </span><property name="logAbandoned" value="true" /> <!-- <span style="color:#ff0000;">打印日志</span> -->
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span></bean>
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span><!-- step 3 根据数据源创建session工厂 --><span style="white-space:pre"> </span>
<span style="white-space:pre"> </span><bean id="sessionFactory"
<span style="white-space:pre"> </span>class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<span style="white-space:pre"> </span><property name="dataSource" ref="dataSource" />
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span><!-- 通过包扫描的方式,可以不用每次都添加.hbm.xml文件 -注意这里配置的是.hbm.xml所在的目录 -->
<span style="white-space:pre"> </span><property name="mappingDirectoryLocations">
<list>
<value>classpath:com/tianmen/entity</value>
</list>
</property>
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span><property name="hibernateProperties">
<span style="white-space:pre"> </span><props>
<span style="white-space:pre"> </span><prop key="hibernate.dialect">${hibernate.dialect}</prop>
<span style="white-space:pre"> </span><prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<span style="white-space:pre"> </span><prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<span style="white-space:pre"> </span></props>
<span style="white-space:pre"> </span></property>
<span style="white-space:pre"> </span></bean>