1

壊れた接続オブジェクトを接続プールから削除するにはどうすればよいですか?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
4

2 に答える 2

0

c3p0 はいくつかの方法で接続をテストできます。

  • チェックアウト時
  • チェックイン時
  • 定期的に

構成はここで説明されています: http://www.mchange.com/projects/c3p0/#configuring_connection_testing

接続テストでは、取得した接続でどれだけの作業を行うかによって、いくらかのオーバーヘッドが追加されることに注意してください。

于 2012-07-18T11:46:26.680 に答える
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>

これがうまくいくことを願っています

于 2012-07-18T11:49:17.810 に答える