<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-46  評論-54  文章-0  trackbacks-0
    最近用 Hibernate 3 連接 Mysql 4 數據庫。
    調試時都還好,真正發布的時候毛病來了。
    每天早晨都要都會報錯,不能正常操作數據庫。
    Mysql 重啟,無效,Tomcat 重啟,有效。

    Mysql(MySQL 4.1) 文檔 7.5.2 節
    Tuning Server Parameters 里面
    在 Mysql控制臺下輸入 SHOW VARIABLES;
    最后一個參數
    wait_timeout?? ?28800
    如果單位是秒,也就是 8 個小時。
    程序最后一次建立連接完畢之后 8 個小時,
    Mysql 單方面關閉了這個連接。
    但 Hibernate 還在記憶著這個連接基本信息。
    程序再次連接的時候,已經不存在了。

    不過,Hibernate 可以設置它自己的 timeout 。
    到了 Hibernate 3 默認第三方的連接池管理,
    由 Apache 的 DBCP 項目更換成了 c3p0 項目
    它的屬性在 Hibernate 配置屬性有對應的寫法,如:
    c3p0.maxIdleTime = hibernate.c3p0.timeout
    c3p0.maxPoolSize = hibernate.c3p0.max_size
    所以,要修改一下 hibernate.cfg.xml 文檔
    將 Hibernate 默認連接池參數
    <property name="connection.pool_size">5</property>
    刪除或注釋掉,Hibernate 默認連接池比較初級。
    然后,加入以下屬性
    <property name="hibernate.c3p0.timeout">1800</property>
    <property name="hibernate.c3p0.max_size">5</property>
    就可以使用 c3p0 來管理連接池了。
    其實這些屬性的參數名都可以在 Hibernate 文檔 3.3 節
    JDBC connections 里面找到。
    按照相應的格式更改名字和值就可以了。

    posted on 2006-02-14 19:43 rox 閱讀(12506) 評論(5)  編輯  收藏 所屬分類: hibernate

    評論:
    # re: Hibernate與Mysql使用c3p0連接池時的一點注意。 2006-03-15 21:58 | rox
    在嘗試了修改hibernate c3p0設置,更改為使用Tomcat自己的連接池后仍然沒有改善。
    決定從根源入手,設置mysql的wait_timeout為31536000(一年),再來試試。

    [mysqld]
    set-variable=wait_timeout=31536000
    set-variable=interactive_timeout=31536000

    仍然沒有改善,看來是代碼有問題。  回復  更多評論
      
    # 轉貼 風間小筑 的 c3p0 & proxool 2006-04-14 14:10 | rox
    他的Blog已經不能訪問了,這些內容都是用Google的網頁快照找來的。

    前一段時間用c3p0作hibernate3的連接池,發現連接數總是很多,并不能釋放,用幾天就會占用100多個數據庫連接,嘗試修改了幾次配置文件問題依舊,無奈換成了proxool,問題居然解決了。

    c3p0配置
    <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>
    <property name="hibernate.c3p0.max_statements">100</property>
    <property name="hibernate.c3p0.idle_test_period">120</property>
    <property name="hibernate.c3p0.acquire_increment">2</property>

    proxool配置
    <property name="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property>
    <property name="hibernate.proxool.pool_alias">xjgame</property>
    <property name="hibernate.proxool.xml">proxool.xml</property>


    <?xml version="1.0" encoding="ISO-8859-1"?>
    <something-else-entirely>
    <proxool>
    <alias>xjgame</alias>
    <driver-url>jdbc:oracle:thin:@123.123.123.12:1521:game</driver-url>
    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
    <driver-properties>
    <property name="user" value="a"/>
    <property name="password" value="a"/>
    </driver-properties>
    <maximum-connection-count>20</maximum-connection-count>
    <house-keeping-test-sql>select CURRENT_DATE from dual</house-keeping-test-sql>
    </proxool>
    </something-else-entirely>  回復  更多評論
      
    # re: Hibernate與Mysql使用c3p0連接池時的一點注意。 2009-05-25 13:28 | 深泉
    我是hibernate+c3p0+mysql
    映射的表又12張,由12個VO對象和表發生映射關系,在初始化hibernate的時候,c3p0連接池初始化了12次,每次由于一開始設置的initialPoolSize=3,所以等啟動完畢,tomcat就產生了36個連接。請問這是怎么回事,是c3p0的默認方式嗎?
    找了很多資料都沒有找到相關資料。  回復  更多評論
      
    # re: Hibernate與Mysql使用c3p0連接池時的一點注意。 2009-05-25 14:28 | rox
    @深泉
    不好意思,c3p0是因為當時對hibernate不是很熟,有頻繁出現錯誤,沒有辦法才轉的。
    后來發現,還是自己代碼的問題。
    現在主要還是使用DBCP。
    確認一下sessionFactory沒有重復配置。
    另外,initialPoolSize=3,只是初始連接池的大小,并不會對每個連接重復復制,即使是代碼或者配置的錯誤,也不應該出現36的現象。
    你可以試試,換成DBCP的試試,這種現象有沒有再次出現。  回復  更多評論
      
    # re: Hibernate與Mysql使用c3p0連接池時的一點注意。 2009-10-06 22:32 | wateray
    >每次由于一開始設置的initialPoolSize=3,所以等啟動完畢,tomcat就產生了36個連接。

    ----------我要出現這種情況,每次連接會創建initialPoolSize設定的個數。
    不要設置屬性!!!
    c3p0官方文檔。
    c3p0-native property name hibernate configuration key
    c3p0.acquireIncrement hibernate.c3p0.acquire_increment
    c3p0.idleConnectionTestPeriod hibernate.c3p0.idle_test_period
    c3p0.initialPoolSize not available -- uses minimum size
    c3p0.maxIdleTime hibernate.c3p0.timeout
    c3p0.maxPoolSize hibernate.c3p0.max_size
    c3p0.maxStatements hibernate.c3p0.max_statements
    c3p0.minPoolSize hibernate.c3p0.min_size
    c3p0.testConnectionsOnCheckout hibernate.c3p0.validate hibernate 2.x only!

    在hibernate.cfx.hbm里面只能且必須設置上面這些屬性,其中,c3p0.initialPoolSize 不能設置(也無法設置,沒有對應的屬性)。其他屬性只能在單獨的 c3p0.properties 里面設置。

    http://www.mchange.com/projects/c3p0/index.html#initialPoolSize  回復  更多評論
      
    主站蜘蛛池模板: 亚洲精品偷拍无码不卡av| 成在人线av无码免费高潮水 | 亚洲最大无码中文字幕| 亚洲人成色77777| 国产国产成年年人免费看片| 又黄又爽又成人免费视频| 日韩免费在线视频| 一个人看的www免费高清| 国产亚洲综合久久| 亚洲人成未满十八禁网站| 亚洲日产2021三区在线| 亚洲午夜精品久久久久久人妖| a级亚洲片精品久久久久久久| 国产99视频精品免费视频7| 成人毛片视频免费网站观看| 国产免费一区二区三区| 久久免费视频99| 免费在线观影网站| 9久久免费国产精品特黄| 永久免费观看黄网站| 美女免费视频一区二区三区| 亚洲成av人片天堂网无码】| 亚洲一区二区观看播放| 97se亚洲国产综合自在线| wwwxxx亚洲| 亚洲一级高清在线中文字幕| 亚洲熟妇无码爱v在线观看| 亚洲美女在线观看播放| 亚洲欧洲高清有无| 亚洲日韩乱码久久久久久| 亚洲妇女水蜜桃av网网站| 亚洲免费中文字幕| 国产精品高清视亚洲精品| 一本色道久久综合亚洲精品蜜桃冫| 亚洲国产日韩视频观看| 色欲色欲天天天www亚洲伊| 国产亚洲精彩视频| 免费又黄又爽又猛大片午夜 | 日本特黄特黄刺激大片免费| 日日夜夜精品免费视频| 免费一级毛片女人图片|