如何从连接池中删除断开的连接对象?使用c3p0

时间:2012-07-18 01:57:01

标签: java spring jpa c3p0

如何从连接池中删除损坏的连接对象?使用c3p0

在我的应用程序中,当数据库通信失败时,它会显示异常。获得数据库连接后立即发送任何数据库请求我得到相同的异常。获得数据库连接30秒后的任何请求都能正常工作。那么如何删除断开的连接对象?

我的连接属性是: -

url=jdbc:mysql://db_host:db_port/db_name
driverClassName=db_driver_class_name
username=root
password=password
hibernate.platform=org.hibernate.dialect.MySQLDialect
initialPoolSize=5
minPoolSize=5
maxPoolSize=20
checkoutTimeout=1000
maxStatements=20
acquireRetryAttempts=1
acquireRetryDelay=10
maxIdleTime=1
acquireIncrement=0
maxConnectionAge=1

2 个答案:

答案 0 :(得分:0)

c3p0可以通过多种方式测试连接:

  • 退房时
  • 登记入住
  • 定期

此处描述了配置:http://www.mchange.com/projects/c3p0/#configuring_connection_testing

请注意,连接测试会增加一些开销,具体取决于您对获取的连接所做的工作量。

答案 1 :(得分:0)

在配置中包含以下参数

<prop key="hibernate.c3p0.max_idle_time">6</prop>
   <prop key="hibernate.c3p0.max_idle_time_excess_connection">4</prop>
   <prop key="hibernate.c3p0.idle_connection_test_period">600</prop>
   <prop key="hibernate.c3p0.test_connection_on_checkout">true</prop>
   <prop key="hibernate.c3p0.preferred_test_query">SELECT 1;</prop>

希望这对你有用