2014-09-03 1 views
0

Я работаю в java hibernate и mysql. Я хочу использовать настройку транзакции для функциональности платежей приложения. Я просто тестирую код, как показано ниже, для того, чтобы установить работу.hibernate settimeout не работает mysql

Transaction tx = (Transaction) threadTransaction.get(); 
try { 
    if (tx == null) { 
     Session session = (Session) threadSession.get(); 
     session.getTransaction().setTimeout(5); 
     tx=session.beginTransaction(); 

     try { 
      Thread.sleep(6000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 

     if(session.getTransaction().isActive()) { 
      System.out.println("session active"); 
     } 
     else { 
      System.out.println("session inactive"); 
     } 

     threadTransaction.set(tx); 
    } 
} 
catch (HibernateException e) { 
    throw new HibernateException("", e); 
} 

Но это сеанс печати активен, значит тайм-аут не работает. Какова причина? пожалуйста помоги !

ответ

0

Hibernate очень хорош в том, чтобы ничего не делать, пока ничего не нужно делать (эффективность и т. Д.). Я думаю, что это то, что показывает ваш тест, а не то, что тайм-аут не работает на то, что было intended to do:

«... гарантируя, что взаимоблокировки и запросы на уровне базы данных с огромными наборами результатов ограничены определенным временем ожидания». Также обратите внимание на то, что «setTimeout() не может быть вызван в компоненте CMT ...»

Проверьте тайм-аут транзакции с помощью некоторого кода, который делает то, что предназначен для таймаута транзакции, и я думаю, что вы найдете его работоспособным.

+0

hai, van Спасибо за ответ. на самом деле я хочу использовать тайм-аут длительной беседы, например, использовать некоторые места и подавать. приложение блокирует эти места и совершает транс. новый транс тогда начнется, скажем, 5mnts, чтобы позволить ему платить amont. если он не заплатил загар, не получается. это сценарий. я тестирую его lik ths anddidnt work –

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