休眠連接到MySQL我的db未關閉。在10秒鐘內點擊10次之後,我從MySQL Workbench(在我的開發機器中獲得了這個連接統計信息,我是唯一的用戶)。 MySQL Workbench Server Status
我有那些地方即使使用C3P0 +顯式會話,休眠連接也不會關閉。()
- C3P0和運行(從log4j的檢查,有關C3P0沒有問題,似乎運行)
- ,檢查是否有一個開放的會議,並關閉它在一個ServletReqestListener requestDestroyed()方法。
- Hibernate Session對象被保存在ThreadLocal中,所以每個請求只有一個連接,它在第一個查詢時打開,並在ServletRequestListener中關閉。
- 每次我打開一個會話並關閉一個會話時,我都會輸出「Session Opened」和「Session Closed」給System.out,就像在代碼示例中那樣。在每次請求時,每頁刷新,我得到「Session Opened」,並在「Session Closed」之後,分別爲。所以我的小邏輯奏效。但連接並未關閉。
我的hibernate.cfg.xml
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">officenic</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/officenic</property>
<property name="hibernate.connection.username">officenic</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<!-- configuration pool via c3p0 -->
<property name="hibernate.c3p0.acquire_increment">1</property>
<property name="hibernate.c3p0.idle_test_period">100</property> <!-- seconds -->
<property name="hibernate.c3p0.max_size">5</property>
<property name="hibernate.c3p0.max_statements">0</property>
<property name="hibernate.c3p0.min_size">1</property>
<property name="hibernate.c3p0.timeout">100</property> <!-- seconds -->
的代碼塊我每次打電話,我想關閉會話。
if (session == null)
return;
if (session.isOpen()) {
if (session.isDirty())
session.flush();
session.close();
System.out.println("Session closed");
}
難道我錯過了什麼?
我的+1。謝謝... – Navnath 2013-04-24 10:26:36