ERROR org.hibernate.util.JDBCExceptionReporter - Already closed 异常问题

小猫王 发布于 2013/02/04 11:20
阅读 4K+
收藏 1

用的ssh2框架+mysql+tomcat 我在本地测试时,重来没发生这个异常;当部署到服务器测试时有时抛这个异常,第一次进入某些链接会抛,再点就正常了,有些时候要多点几次才不抛异常,不知道什么原因:

  <!-- spring中 配置数据源   dbcp数据库连接池-->
    <bean id="dataSource"
    class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" >
        <property name="driverClassName">
            <value>com.mysql.jdbc.Driver</value>
        </property>
        <property name="url">
            <value>jdbc:mysql://localhost/lessmore</value>
        </property>
        <property name="username">
            <value>root</value>
        </property>
        <property name="password">
            <value>root</value>
        </property>
        <!--连接池启动时的初始值  -->
        <property name="initialSize" value="10"></property>
        <!-- 连接池最大值 -->
        <property name="maxActive" value="100"></property>
        <!--最大空闲值  -->
        <property name="maxIdle" value="30"></property>
        <!--最小空闲值  -->
        <property name="minIdle" value="5"></property>
        
        <property name="maxWait" value="10000" />
        
    </bean> 

我开发时用的mysql5.5, 但 买的vps上已经按上了5.1,我也没重新按,应该跟数据库没关系吧?

不知道是不是 连接池配置错误?

加载中
0
CCNU
CCNU
首先查到mysql连接的过期时间 mysql> show global variables like 'wait_timeout';
将dbcp的minEvictableIdleTimeMillis 值设置为小于mysql的wait_timeout
<bean id="dataSource"
    class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" >
        <property name="driverClassName">
            <value>com.mysql.jdbc.Driver</value>
        </property>
        <property name="url">
            <value>jdbc:mysql://localhost/lessmore</value>
        </property>
        <property name="username">
            <value>root</value>
        </property>
        <property name="password">
            <value>root</value>
        </property>

	<property name="timeBetweenEvictionRunsMillis" value="20000" />
	<property name="minEvictableIdleTimeMillis" value="28700" />
        <!--连接池启动时的初始值  -->
        <property name="initialSize" value="10"></property>
        <!-- 连接池最大值 -->
        <property name="maxActive" value="100"></property>
        <!--最大空闲值  -->
        <property name="maxIdle" value="30"></property>
        <!--最小空闲值  -->
        <property name="minIdle" value="5"></property>
        
        <property name="maxWait" value="10000" />
        
    </bean>
小猫王
小猫王
怎么会是30秒
小猫王
小猫王
show global variables like 'wait_timeout'; 为30, 不知道怎么回事,还是不行
0
CCNU
CCNU
mysql设置一下,参考这里  http://my.oschina.net/tinyxinxin/blog/93821
CCNU
CCNU
回复 @万里码 : 当时也是被这个问题坑住了,后来照这么设置就可以了
小猫王
小猫王
加了,还是没解决,有时刷新好几次才能进入一个页面,如果几分钟不点某个链接,再点就抛异常;连续点链接就不会...
0
CCNU
CCNU

引用来自“万里码”的答案


找到mysql配置文件my.ini修改这个值,默认都是28800秒的
小猫王
小猫王
哎,我说怎么老出问题,我电脑上的都是28800,这是vps上自动安装的,谢了
返回顶部
顶部