Как перезапустить транзакцию после блокировки или тайм-аута в Java? - PullRequest
4 голосов
/ 11 июля 2011

Как перезапустить транзакцию (чтобы она выполнялась хотя бы один раз), когда мы получим:

(com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: обнаружена тупиковая ситуация при попытке получить блокировку; попробуйте перезапустить транзакцию) ИЛИ (истекло время ожидания транзакции)?

Я использую MySQL (innoDB ENGINE) и Java. Пожалуйста, помогите, а также свяжите любые полезные ресурсы или коды.

Ответы [ 2 ]

1 голос
/ 11 июля 2011

Когда вы ловите исключение такого типа в блоке catch

catch(Exception e){
if(e instanceof TransactionRollbackException){
 //Retrigger Your Transaction
   }
// log your exception or throw it its upto ur implementation
}
1 голос
/ 11 июля 2011

Если вы используете простой JDBC, вы должны делать это вручную, в цикле (и не забывайте каждый раз проверять предварительные условия.
Если вы используете spring, " Как перезапустить транзакции при блокировке / блокировке в Spring? " может помочь.

...