云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          posts - 288, comments - 524, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          iBatis自己帶了一個(gè)simple的數(shù)據(jù)庫連接池,基本的功能都有。但是在處理部分?jǐn)?shù)據(jù)庫(比如mysql)的連接空閑時(shí)間太長(mysql是8小時(shí))自動超時(shí)的時(shí)候,就比不上象c3p0這樣的連接池軟件了(c3p0能自動處理數(shù)據(jù)庫連接被關(guān)閉的情況)。
          我目前采用的方法是iBatis本身提供的一種算得上是取巧的辦法,基本思想就是每隔一段時(shí)間往數(shù)據(jù)庫發(fā)一條查詢語句,這樣使得數(shù)據(jù)庫空閑時(shí)間不會太長,而使得其自動關(guān)閉。
          方法是在SqlMapConfig.xml的dataSource進(jìn)行如下配置:
          <dataSource type="SIMPLE">
              <property name="JDBC.Driver" value="${jdbc.driverClassName}"/>
              <property name="JDBC.ConnectionURL" value="${jdbc.url}"/>
              <property name="JDBC.Username" value="${jdbc.username}"/>
              <property name="JDBC.Password" value="${jdbc.password}"/>
              <property name="Pool.PingEnabled" value="true"/>
              <property name="Pool.PingQuery" value="select 1"/>
              <property name="Pool.PingConnectionsOlderThan" value="0"/>
              <property name="Pool.PingConnectionsNotUsedFor" value="3600000"/>
          </dataSource>
          開始的3行是關(guān)于數(shù)據(jù)庫連接信息的,不需要說明了。
          Pool.PingEnabled:是用于設(shè)置開啟是否允許檢測連接狀態(tài)
          Pool.PingQuery:是用于檢測連接的查詢語名,當(dāng)然是越簡單越好
          Pool.PingConnectionOlderThan:對持續(xù)連接時(shí)間超過設(shè)定值(毫秒)的連接進(jìn)行檢測,我將其設(shè)置為0(不進(jìn)行此項(xiàng)檢測),否則,iBatis在超過這個(gè)時(shí)間后,執(zhí)行每個(gè)sql以前檢測連接,對于性能可能會有一定的影響。
          Pool.PingConnectionsNotUsedFor:對空閑超過設(shè)定值(毫秒)的連接進(jìn)行檢測,我設(shè)置為1小時(shí)(mysql缺省的關(guān)閉時(shí)間是8小時(shí))

          當(dāng)然,還有一個(gè)辦法是使用c3p0這樣的連接池
          但是需要自己寫一部分代碼,實(shí)現(xiàn)以下接口:
          public interface DataSourceFactory {
          public void initialize(Map map);
          public DataSource getDataSource();
          }



          評論

          # re: iBatis使用mysql,數(shù)據(jù)庫超時(shí)自動關(guān)閉問題的解決  回復(fù)  更多評論   

          2008-05-13 15:04 by ci
          ..............
          主站蜘蛛池模板: 乌恰县| 福海县| 兴国县| 临邑县| 通渭县| 长泰县| 班戈县| 乡城县| 高尔夫| 夏邑县| 镇坪县| 喀喇| 沁阳市| 筠连县| 右玉县| 出国| 镇坪县| 德令哈市| 濉溪县| 宜都市| 兴国县| 揭东县| 宣威市| 东台市| 湖州市| 玛曲县| 昌宁县| 广元市| 和顺县| 沙坪坝区| 洪江市| 黄骅市| 安阳县| 西城区| 寿光市| 惠东县| 酒泉市| 抚宁县| 晋中市| 高邑县| 青浦区|