posts - 3,  comments - 14,  trackbacks - 0
          hibernate默認連接池有一個問題,不會自動檢測數據庫連接是否斷開,MYSQL數據庫一段時間(大約8小時)沒有訪問就會斷開連接,連接池里的連接卻還是存在,下次訪問hibernate會繼續使用這個連接,導致數據庫連接異常。由于該問題需要在服務器長時間運行時才會出現,所以在平時測試很難發現。

          解決方法:
          1.在連接參數中使用autoReconnect以后,第一次執行失敗后會自動重新連接。
          2.通過把服務器上Mysql的"wait_timeout"屬性設置的高點。
          3.不使用Hibernate內置的連接池,改用C3P0連接池,這個連接池會自動處理數據庫連接被關閉的情況。要使用C3P0很簡單,先從Hibernate里把c3p0-0.8.3.jar復制到項目的lib目錄中,再在hibernate.properties里去掉hibernate.c3p0開頭的那些屬性的注釋(使用缺省值或自己需要的數值),這樣 Hibernate就會自動使用C3P0代替內置的連接池了。c3p0為open source的JDBC連接池,隨hibernate一起發布。c3p0連接池的配置非常簡單,只需要在hibernate.cfg.xml里增加:
                  <!-- configuration pool -->
                  <property name="c3p0.acquire_increment">1</property>
                  <property name="c3p0.idle_test_period">100</property> <!-- seconds -->
                  <property name="c3p0.max_size">5</property>
                  <property name="c3p0.max_statements">0</property>
                  <property name="c3p0.min_size">2</property>
                  <property name="c3p0.timeout">90</property> <!-- seconds -->
          另外,還需要在CLASS_PATH里加上c3p0-x.x.x.jar文件(x.x.x為版本號),c3p0-x.x.x.jar文件隨hibernate一起發布,你可以在其lib目錄下找到該文件。
          配置好之后,hibernate便會自動使用c3p0的連接池:C3P0ConnectionProvider


          www.jhost.cn免費JSP、PHP主機空間,提供MYSQL數據庫,支持常用J2EE框架,FTP文件管理。

          posted on 2009-06-13 05:57 jhost 閱讀(2158) 評論(2)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 乌兰察布市| 乌拉特前旗| 安庆市| 桦甸市| 介休市| 太原市| 洱源县| 丰镇市| 靖西县| 青龙| 东至县| 札达县| 松桃| 博爱县| 永顺县| 石河子市| 紫云| 札达县| 衡东县| 古田县| 安溪县| 临西县| 丰顺县| 巴楚县| 偃师市| 肇源县| 邛崃市| 田阳县| 无极县| 蕉岭县| 绥中县| 合川市| 阳城县| 茂名市| 临泉县| 聂荣县| 凉城县| 博兴县| 永川市| 司法| 长治市|