如何在http连接丢失后回滚数据库事务

时间:2013-10-01 13:39:05

标签: servlets transactions httpwebrequest commit rollback

最近在采访中,面试官问我一个问题,下面是问题 -

假设一个请求被发送到一个servlet并且servlet执行几个数据库事务(首先更新和提交,然后读取和更新并再次提交),这需要大约3-4分钟,在此期间用户按下取消按钮,连接丢失了。你将如何回滚整个交易。

我的回答是 - 由于Servlet抛出IOException,我们可以处理异常并回滚事务。

但他再一次质疑我已经完成的数据库提交怎么样,你会如何回滚呢。

我一片空白,回答说我从未遇到过这种情况。但我真的很想知道在这种情况下可以做些什么。

感谢。

1 个答案:

答案 0 :(得分:0)

  

但他再一次质问我已经存在的DB提交是什么   完了,你会怎么回滚呢。

我认为这不是与servlet相关的问题。如果事务在数据库中提交,则无法回滚它。数据库事务具有多个称为ACID的属性(原子性,一致性,隔离性,持久性)。在这种情况下适用的是Durability

  

“耐久性是保证交易的ACID财产   承诺将永久存在“