2016-09-08 5 views
0

Я начинаю с Hibernate. Поскольку я читал, что мне нужно настроить соединение с пулом, я начинаю использовать C3P0закрытые соединения в c3p0

все в порядке, но когда я достигаю максимальных подключений, приложение зависает, мне нужно закрыть приложение и запустить его снова.

это моя C3P0 часть в hibernate.cfg.xml

<property name="hibernate.c3p0.min_size">1</property> 
<property name="hibernate.c3p0.max_size">15</property> 
<property name="hibernate.c3p0.timeout">3000</property> 
<property name="hibernate.c3p0.max_statements">20</property> 
<property name="hibernate.c3p0.idle_test_period">300</property> 

в моей функции, когда я сохранить объект I закрыть сессию.


 

 
public void Save item(Item item)throws Exception{  
 
      try{   
 
      SessionFactory sf= NewHibernateUtil.getSessionFactory(); 
 
      Session session; 
 
      session = sf.openSession(); 
 
      Transaction tx= session.beginTransaction(); 
 
      session.save(item); 
 
      tx.commit(); 
 
      session.close();   
 
      } 
 
      catch(Exception ex){ 
 
       throw new Exception(ex); 
 
      } 
 
     }

если я проверить соединения в MySql я вижу, что все соединения являются сон, но зависает.

Что мне здесь не хватает?

+0

Как вы относитесь к замораживанию? Он висит в какой-либо конкретной строке кода? – user3138997

+0

Когда я нажимаю на кнопку, чтобы сохранить объект, приложение перестает работать. (не отвечающее состояние). Если я проверю соединение, я вижу, что я достигаю максимально допустимых подключений. поэтому (я думаю) приложение замораживает – Clams

ответ

0

Вы не надежно close() Соединения (завернутые в сеансы), поэтому они протекают. Рассмотрите, что происходит, когда происходит Исключение.

Либо используйте Java 7+ try-with-resources, если Session поддерживает это, или использует старую надежную идиому очистки, см. Appendix to my answer here.

Если вы исправите это и все еще испытываете утечку соединения, c3p0 имеет configuration parameters, чтобы помочь вам отслеживать утечку.

Смежные вопросы