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

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

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

    隨筆-46  評(píng)論-54  文章-0  trackbacks-0
    最近用 Hibernate 3 連接 Mysql 4 數(shù)據(jù)庫(kù)。
    調(diào)試時(shí)都還好,真正發(fā)布的時(shí)候毛病來(lái)了。
    每天早晨都要都會(huì)報(bào)錯(cuò),不能正常操作數(shù)據(jù)庫(kù)。
    Mysql 重啟,無(wú)效,Tomcat 重啟,有效。

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

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

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

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

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

    仍然沒(méi)有改善,看來(lái)是代碼有問(wèn)題。  回復(fù)  更多評(píng)論
      
    # 轉(zhuǎn)貼 風(fēng)間小筑 的 c3p0 & proxool 2006-04-14 14:10 | rox
    他的Blog已經(jīng)不能訪問(wèn)了,這些內(nèi)容都是用Google的網(wǎng)頁(yè)快照找來(lái)的。

    前一段時(shí)間用c3p0作hibernate3的連接池,發(fā)現(xiàn)連接數(shù)總是很多,并不能釋放,用幾天就會(huì)占用100多個(gè)數(shù)據(jù)庫(kù)連接,嘗試修改了幾次配置文件問(wèn)題依舊,無(wú)奈換成了proxool,問(wèn)題居然解決了。

    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>  回復(fù)  更多評(píng)論
      
    # re: Hibernate與Mysql使用c3p0連接池時(shí)的一點(diǎn)注意。 2009-05-25 13:28 | 深泉
    我是hibernate+c3p0+mysql
    映射的表又12張,由12個(gè)VO對(duì)象和表發(fā)生映射關(guān)系,在初始化hibernate的時(shí)候,c3p0連接池初始化了12次,每次由于一開(kāi)始設(shè)置的initialPoolSize=3,所以等啟動(dòng)完畢,tomcat就產(chǎn)生了36個(gè)連接。請(qǐng)問(wèn)這是怎么回事,是c3p0的默認(rèn)方式嗎?
    找了很多資料都沒(méi)有找到相關(guān)資料。  回復(fù)  更多評(píng)論
      
    # re: Hibernate與Mysql使用c3p0連接池時(shí)的一點(diǎn)注意。 2009-05-25 14:28 | rox
    @深泉
    不好意思,c3p0是因?yàn)楫?dāng)時(shí)對(duì)hibernate不是很熟,有頻繁出現(xiàn)錯(cuò)誤,沒(méi)有辦法才轉(zhuǎn)的。
    后來(lái)發(fā)現(xiàn),還是自己代碼的問(wèn)題。
    現(xiàn)在主要還是使用DBCP。
    確認(rèn)一下sessionFactory沒(méi)有重復(fù)配置。
    另外,initialPoolSize=3,只是初始連接池的大小,并不會(huì)對(duì)每個(gè)連接重復(fù)復(fù)制,即使是代碼或者配置的錯(cuò)誤,也不應(yīng)該出現(xiàn)36的現(xiàn)象。
    你可以試試,換成DBCP的試試,這種現(xiàn)象有沒(méi)有再次出現(xiàn)。  回復(fù)  更多評(píng)論
      
    # re: Hibernate與Mysql使用c3p0連接池時(shí)的一點(diǎn)注意。 2009-10-06 22:32 | wateray
    >每次由于一開(kāi)始設(shè)置的initialPoolSize=3,所以等啟動(dòng)完畢,tomcat就產(chǎn)生了36個(gè)連接。

    ----------我要出現(xiàn)這種情況,每次連接會(huì)創(chuàng)建initialPoolSize設(shè)定的個(gè)數(shù)。
    不要設(shè)置屬性!!!
    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里面只能且必須設(shè)置上面這些屬性,其中,c3p0.initialPoolSize 不能設(shè)置(也無(wú)法設(shè)置,沒(méi)有對(duì)應(yīng)的屬性)。其他屬性只能在單獨(dú)的 c3p0.properties 里面設(shè)置。

    http://www.mchange.com/projects/c3p0/index.html#initialPoolSize  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 一本色道久久综合亚洲精品高清| 亚洲成在人线aⅴ免费毛片| 最近2019中文字幕免费直播 | 国产aⅴ无码专区亚洲av| 中文字幕在线免费| 亚洲日韩中文字幕无码一区| 亚洲日本一区二区一本一道| 最近2018中文字幕免费视频| 在线看亚洲十八禁网站| 亚洲大片在线观看| 韩国免费三片在线视频| 三年片免费高清版 | 成人亚洲国产va天堂| 国产亚洲美女精品久久久2020| 久久精品国产免费观看| jizz免费观看| 亚洲中文字幕AV在天堂| 久久精品国产亚洲AV麻豆不卡| 成年女人喷潮毛片免费播放| 中文无码成人免费视频在线观看| 亚洲人成77777在线观看网| 国产亚洲婷婷香蕉久久精品| 成年女人喷潮毛片免费播放| 99re在线视频免费观看| 日本一区二区在线免费观看| 亚洲kkk4444在线观看| 久久久久亚洲AV片无码| 亚洲精品久久久www| 在线A级毛片无码免费真人| 97在线视频免费公开观看| 国产免费高清69式视频在线观看| 久久亚洲精品国产精品婷婷| 久久亚洲精精品中文字幕| 狠狠亚洲狠狠欧洲2019| 四虎永久成人免费| 成年美女黄网站18禁免费| 久久永久免费人妻精品下载| 精品无码国产污污污免费网站国产 | 免费人成在线观看网站品爱网| 深夜免费在线视频| 在线观看亚洲免费视频|