如何在Java中在死锁或超时后重新启动事务?

4
如何在出现以下情况时重新启动事务(以便它至少执行一次):
( com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException:Deadlock found when trying to get lock; Try restarting transaction ) OR ( transaction times out ) ?
我正在使用MySQL(innoDB引擎)和Java。请帮忙并提供任何有用的资源或代码链接。
2个回答

1

无论何时在您的catch块中捕获此类异常

catch(Exception e){
if(e instanceof TransactionRollbackException){
 //Retrigger Your Transaction
   }
// log your exception or throw it its upto ur implementation
}

1
你确定这只与死锁有关吗?如果除了死锁之外的任何情况都可能抛出“TransactionRollbackException”,我可不想陷入无休止的循环中。 - xLite

1

嗨,感谢您的回复。我正在使用普通的JDBC。您能否提供一个示例代码,例如for() { transaction },以检查前置条件。 - ravi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接