JDBCConnectionException: could not execute query,數據庫連接池問題


  1、做了個后台編輯系統,上傳到服務器后正常使用,但是第二天卻出現了如下的問題,

    

  經過查詢資料知道了是數據庫連接池的問題。

  按照網上網友的說法,運行一個系統,測試沒有問題,然后把本地時間更改到后天,再次運行就報這個錯誤了!(首先啟動tomcat,打開其中的一個系統,比如students, 運行無誤,可以登錄系統,把系統時間設置為1天后,再次打開, 就出現了上面圖片中的錯    誤,親自試一下就是這樣子滴,別忘了打開tomcat就OK)。

    Hibernate支持如下的連接池:
   DriverManagerConnectionProvider:代表由Hibernate提供的默認的數據庫連接池
   C3P0ConnectionProvider:代表C3P0連接池
   ProxoolConnectionProvider:代表Proxool連接池
   DBCPConnectionProvider:代表DBCP連接池
   DatasourceConnectionProvider:代表在受管理環境中由容器提供的數據源

  默認連接池並不支持在分配一個連接時,測試其有效與否的功能,而C3P0、Proxool、DBCP都提供了這樣的功能,正好可以解決上述問題,在這里我們使用c3p0來解決。

  在hibernate.cfg.xml文件里面加入如下的配置:

 

  

  <property name="hibernate.connection.provider_class">
    org.hibernate.connection.C3P0ConnectionProvider
  </property>

  <!-- 最大連接數 -->
  <property name="hibernate.c3p0.max_size">20</property>
  <!-- 最小連接數 -->
  <property name="hibernate.c3p0.min_size">5</property>
  <!-- 獲得連接的超時時間,如果超過這個時間,會拋出異常,單位毫秒 -->
  <property name="hibernate.c3p0.timeout">120</property>
  <!-- 最大的PreparedStatement的數量 -->
  <property name="hibernate.c3p0.max_statements">100</property>
  <!-- 每隔120秒檢查連接池里的空閑連接 ,單位是秒-->
  <property name="hibernate.c3p0.idle_test_period">120</property>
  <!-- 當連接池里面的連接用完的時候,C3P0一下獲取的新的連接數 -->
  <property name="hibernate.c3p0.acquire_increment">2</property>
  <!-- 每次都驗證連接是否可用 -->
  <property name="hibernate.c3p0.validate">true</property>

  <!--每*秒檢查所有連接池中的空閑連接。Default: 0 -->
  <property name="c3p0.idleConnectionTestPeriod ">18000</property>
  <!--最大空閑時間,*秒內未使用則連接被丟棄。若為0則永不丟棄。Default: 0 -->
  <property name="c3p0.maxIdleTime">25000</property>

 

 想看c3p0更詳細的說明可以到http://www.blogjava.net/sway/archive/2008/11/05/238860.html去
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM