最˜q‘的一个项目在Hibernate使用C3P0çš„è¿žæŽ¥æ± åQŒæ•°æ®åº“为Mysqlã€‚å¼€å‘æµ‹è¯•没有问题,在è¿è¡Œä¸æ¯ä¸ªä¸€ŒDµé•¿çš„空闲时间就出现异常:
查看了Mysql的文档,以åŠConnector/J的文档以åŠåœ¨¾U¿è¯´æ˜Žå‘玎ͼŒå‡ºçް˜q™ç§å¼‚å¸¸çš„åŽŸå› æ˜¯åQ?/p>
MysqlæœåŠ¡å™¨é»˜è®¤çš„“wait_timeout”æ˜?ž®æ—¶åQŒä¹Ÿž®±æ˜¯è¯´ä¸€ä¸ªconnection½Iºé—²‘…过8ä¸ªå°æ—Óž¼ŒMysqlž®†è‡ªåЍæ–å¼€è¯?connection。这ž®±æ˜¯é—®é¢˜çš„æ‰€åœ¨ï¼Œåœ¨C3P0 poolsä¸çš„connections如果½Iºé—²‘…过8ž®æ—¶åQŒMysqlž®†å…¶æ–å¼€åQŒè€ŒC3P0òq¶ä¸çŸ¥é“该connectionå·²ç»å¤±æ•ˆåQŒå¦‚果这时有 Clientè¯äh±‚connectionåQŒC3P0ž®†è¯¥å¤±æ•ˆçš„Connectionæä¾›¾l™ClientåQŒå°†ä¼šé€ æˆä¸Šé¢çš„异常ã€?/p>
解决的方法有3¿U:
å½“ç„¶æœ€å¥½çš„åŠžæ³•æ˜¯åŒæ—¶ç»¼åˆä‹É用上˜q?¿U方法,下颞®±DBCPå’ŒC3P0分别åšä¸€è¯´æ˜ŽåQŒå‡è®¾wait_timeout为默认的8ž®æ—¶
DBCPå¢žåŠ ä»¥ä¸‹é…置信æ¯:
C3P0å¢žåŠ ä»¥ä¸‹é…置信æ¯:
更多的酾|®ä¿¡æ¯å¤§å®¶å¯ä»¥æŸ¥çœ‹C3P0文档åQŒConnector/J文档åQŒä»¥åŠDBCP的文档ã€?/p>
è½? http://www.javaeye.com/article/38506
我自å·Þqš„é…ç½®:
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl = jdbc:mysql://localhost:3306/test
jdbc.user = root
jdbc.password = 12345
jdbc.miniPoolSize = 1
jdbc.maxPoolSize = 20
jdbc.initialPoolSize = 1
jdbc.maxIdleTime = 25000
jdbc.acquireIncrement = 1
jdbc.acquireRetryAttempts = 30
jdbc.acquireRetryDelay = 1000
jdbc.testConnectionOnCheckin = true
jdbc.automaticTestTable = c3p0TestTable
jdbc.idleConnectionTestPeriod
jdbc.checkoutTimeout=3000
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
</bean>
<!-- JDBC URL -->
<property name="connection.url">jdbc:mysql://localhost/dbname?characterEncoding=gb2312</property>
<!-- æ•°æ®åº“用户å-->
<property name="connection.username">root</property>
<!-- æ•°æ®åº“密ç ?->
<property name="connection.password">root</property>
<!--Sql Server 驱动½E‹åº eg. jtds-1.2.jar-->
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
<!-- JDBC URL -->
<property name="connection.url">jdbc:jtds:sqlserver://localhost:1433;DatabaseName=dbname</property>
<!-- æ•°æ®åº“用户å-->
<property name="connection.username">sa</property>
<!-- æ•°æ®åº“密ç ?->
<property name="connection.password"></property>
<!--Oracle 驱动½E‹åº ojdbc14.jar-->
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<!-- JDBC URL -->
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:dbname</property>
<!-- æ•°æ®åº“用户å-->
<property name="connection.username">test</property>
<!-- æ•°æ®åº“密ç ?->
<property name="connection.password">test</property>
RDBMS | 方言 |
---|---|
DB2 | org.hibernate.dialect.DB2Dialect |
DB2 AS/400 | org.hibernate.dialect.DB2400Dialect |
DB2 OS390 | org.hibernate.dialect.DB2390Dialect |
PostgreSQL | org.hibernate.dialect.PostgreSQLDialect |
MySQL | org.hibernate.dialect.MySQLDialect |
MySQL with InnoDB | org.hibernate.dialect.MySQLInnoDBDialect |
MySQL with MyISAM | org.hibernate.dialect.MySQLMyISAMDialect |
Oracle (any version) | org.hibernate.dialect.OracleDialect |
Oracle 9i/10g | org.hibernate.dialect.Oracle9Dialect |
Sybase | org.hibernate.dialect.SybaseDialect |
Sybase Anywhere | org.hibernate.dialect.SybaseAnywhereDialect |
Microsoft SQL Server | org.hibernate.dialect.SQLServerDialect |
SAP DB | org.hibernate.dialect.SAPDBDialect |
Informix | org.hibernate.dialect.InformixDialect |
HypersonicSQL | org.hibernate.dialect.HSQLDialect |
Ingres | org.hibernate.dialect.IngresDialect |
Progress | org.hibernate.dialect.ProgressDialect |
Mckoi SQL | org.hibernate.dialect.MckoiDialect |
Interbase | org.hibernate.dialect.InterbaseDialect |
Pointbase | org.hibernate.dialect.PointbaseDialect |
FrontBase | org.hibernate.dialect.FrontbaseDialect |
Firebird | org.hibernate.dialect.FirebirdDialect |