相关疑难解决方法(0)

非数据库应用程序事务

如何将非数据库操作封装到事务中?

例如,假设我有一些顺序调用的方法/函数,一些更新数据库,一些文件系统更新文件,HttpSession中的一些更新参数,一些更新缓存等.如果后一个失败,比如更新会话,如何在文件系统,数据库等中回滚所有其他更改?

环境是像Tomcat这样的Java Servlet容器,类似于Struts2,任何RDBMS,像Hibernate或Ibatis这样的持久层等.

java database filesystems transactions atomic

10
推荐指数
1
解决办法
487
查看次数

在提交或回滚作用域之前,TransactionScope块中的所有代码如何才真正执行?

我读过有关的TransactionScope这个文章,但我还是不明白两两件事:

  1. 何时SqlCommand.ExecuteNonQuery执行它直到scope.Complete()被调用才真正执行?如果这是真的,那么范围内执行的所有操作都会保留并等待scope.Complete()scope.Rollback()
  2. 何时TransactionScope实例化它如何阻止SqlCommand.ExecuteNonQuery执行并等待scope.Complete()scope.Rollback()?它是否会创建一些"地方"并SqlCommand以某种方式了解它并将指令放在那里?

.net c# transactions transactionscope

5
推荐指数
1
解决办法
2525
查看次数

如何使一系列非数据库方法模仿事务。

我需要执行几个需要“事务处理”的方法调用,但是除了try / catch / finally外,我不确定如何实现此方法。

背景

  • 应用程序是基于控制台的。
  • 应用程序将有多个线程
  • 查询数据库以获取连接信息,建立与Web服务的连接以登录,生成会话ID并更新数据库。
  • 一个操作将调用注销,该注销需要清理数据库,清除会话ID并注销Web服务。

我想弄清楚的是

我想确保当请求注销时,我想确保整个过程要么全部成功,要么根本没有成功。例如,我不希望清理数据库,清理会话ID和注销操作失败(因此登录仍然有效)。

理想情况下,解决方案将在发生故障时“回滚”,从而确保维持先前的状态。

是否有一种巧妙的方法可以完成此操作,还是我受困于一系列嵌套的try / catch / finally块来执行此操作?

java transactions

5
推荐指数
1
解决办法
682
查看次数