我用proxool连接池的时候出现connection reset的错误,我是用struts2+spring+hibernate搭框架,如果启动TOMCAT以后,可以成功访问,但是过两个小时左右在去刷新这个页面或者重新访问的时候就会出现那个错误,必需得重启一下tomcat才可以正常访问,这是我配置的问题吗,麻烦大家帮我解决一下谢谢了。我的配置文件如下
Proxool.xml
<proxool>
<alias>DBPool</alias>
<driver-url>
jdbc:oracle:thin:@192.168.28.202:1521:orcl
</driver-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<driver-properties>
<property name="user" value="chinasos" />
<property name="password" value="chinasos098" />
</driver-properties>

<!-- 最少保持的空闲连接数--> 
  <prototype-count>5</prototype-count>
<!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定--> 
    <maximum-connection-count>5000</maximum-connection-count> 
    <!-- 最小连接数--> 
    <minimum-connection-count>10</minimum-connection-count> 
    <!-- 某一时间点的最大连接数 -->   
    <simultaneous-build-throttle>100</simultaneous-build-throttle> 
    <!-- 连接最大时间活动 默认5分钟 单位:秒 -->   
    - <maximum-active-time>5</maximum-active-time> 
    <!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁--> 
    <house-keeping-sleep-time>90000</house-keeping-sleep-time>
      <!-- 连接最大生命时间 默认4小时 单位:秒 -->   
     <maximum-connection-lifetime>14400000</maximum-connection-lifetime>   
       <trace>true</trace>
 </proxool>
hibernate文件如下
<session-factory>
 
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
<property name="hibernate.proxool.pool_alias">DBPool</property>
<property name="hibernate.proxool.xml">proxool.xml</property>
<property name="hibernate.connection.release_mode">auto</property>
<property name="hibernate.cglib.use_reflection_optimizer">true</property>
<property name="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.connection.autocommit">true</property>
      <mapping resource="com/zy/po/eventMng/Eventgpsinfo.hbm.xml" />  </session-factory>
看看是我的配置有问题吗,应该怎么改谢谢了。

解决方案 »

  1.   

    个人觉得<!-- 最少保持的空闲连接数--> 
      <prototype-count>5 </prototype-count> 
    <!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定--> 
        <maximum-connection-count>5000 </maximum-connection-count> 
        <!-- 最小连接数--> 
        <minimum-connection-count>10 </minimum-connection-count> 
        <!-- 某一时间点的最大连接数 -->  
        <simultaneous-build-throttle>100 </simultaneous-build-throttle> 
        <!-- 连接最大时间活动 默认5分钟 单位:秒 -->  
        - <maximum-active-time>5 </maximum-active-time> 
        <!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁--> 
        <house-keeping-sleep-time>90000 </house-keeping-sleep-time> 
          <!-- 连接最大生命时间 默认4小时 单位:秒 -->  
        <maximum-connection-lifetime>14400000 </maximum-connection-lifetime>  
          <trace>true </trace> 
    这些参数可以不配的如果要配的话,要加上发心跳的属性,否则,数据库端在没有定时收到连接消息的情况,一般都会给断开连接的
      

  2.   

    楼上的朋友,是要加上这句吗<maximum-new-connections>20</maximum-new-connections>
      

  3.   

    有没有idle这个东西相关的属性
      

  4.   

    jdbc:oracle:thin:@192.168.28.202:1521:orcl?autoReconnect=true
      

  5.   

    造成这个现象的原因比较多,其中有: 
    1. 超过一定的时候你的数据库连接没有活动,也就是超时,就会被reset 
    2. 网络问题 
    3. 使用这个连接的代码出现异常导致失去了对连接的引用,但是也没有把引用归还给连接池 建议:连接池可以用c3p0试试 
    支持自动重连数据库