18 Mart 2010 Perşembe

Hibernate'ten Mysql'e Otomatik Bağlantı Açılması

Hibernate kullanarak veritabanı işlemleri yapan bir uygulamayı web'te yayınladığımda, bir süre sonra (tahminen birkaç saat) uygulamanın veritabanı ile bağlantısının kesildiğini farkettim. Log'lara baktığımda ise şöyle bir hatanın verildiğini gördüm :

org.hibernate.util.JDBCExceptionReporter: The last packet successfully received from the server was 56697 seconds ago. The last packet sent successfully to the server was 56697 seconds ago, which is longer than the server configured value of ‘wait_timeout’. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property ‘autoReconnect=true’ to avoid this problem

Böyle bir hata alıyor isek yapmamız gereken c3p0 kütüphanesini kullanmak olacaktır.
Kısaca c3p0 ne işe yarıyor peki :

* Veritabanı bağlantılarını elde etmek için, geleneksel DriverManager tabanlı JDBC sürücülerini yeni javax.sql.DataSource'larına uyarlamada kullanılır
* Connection ve DriverManager pooling sağlar.

Yapmamız gereken :

- http://sourceforge.net/projects/c3p0/files/ buradan c3p0 binary'sini indirin. c3p0*.jar 'ı classpath'e ekleyin
- hibernate.cfg.xml dosyasına şu satırları ekleyin


1
100
5
0
2
90
18000
25000
true

org.hibernate.connection.C3P0ConnectionProvider



- c3p0.properties adında bir dosya oluşturun ve şu satırları ekleyin :

c3p0.testConnectionOnCheckout=true
c3p0.maxStatements=0
c3p0.maxStatementsPerConnection=0


Bu dosyayı da(c3p0.properties) classpath'e ekleyin.

Hiç yorum yok: