2

我使用带有 JDBC 和持久性框架的 Java 1.6、Tomcat 和 servlet。我知道(并使用)数据库级事务,但我想知道是否有用于应用程序级回滚和提交的框架?

我确信这有一个特定的名称,但是让我以比我目前实现的更标准的方式编码和测试以下内容:

- get user info
- charge credit card
- create mailing labels
- write db
if any fail, then rollback and:
   - cancel credit card charge
   - invalidate mailing label
   - rollback DB
else
  - commit. (i.e. do it all with threads)

这甚至有意义吗?

到目前为止,我正在处理所有的逻辑和错误检查......想知道是否有一个很好的框架可以提供帮助,因为这变得越来越复杂。

4

3 回答 3

2

听起来您基本上是在考虑软件事务内存。我不会比维基百科的总结做得更好:

在计算机科学中,软件事务内存 (STM) 是一种类似于数据库事务的并发控制机制,用于控制并发计算中对共享内存的访问。它是基于锁的同步的替代方案。在这种情况下,事务是一段代码,它执行一系列对共享内存的读取和写入操作。这些读取和写入逻辑上发生在一个单一的时刻;中间状态对其他(成功的)事务是不可见的。

这是一个非常有趣的想法,但我还没有意识到它真的以“大方式”流行起来。我认为这主要限于研究。也就是说,进行一些搜索会发现Multiverse,这是一个我以前没有听说过的看似有趣的实现,但有一个教程和网站......

于 2012-07-11T02:56:42.037 回答
0

在我看来,我们需要一个带有一些可定制的IEnlistmentNotification实现的System.Transactions.TransactionScope端口。也许JDO Transactions已经做了这些事情,乍一看我并不清楚。从表面上看,它似乎不够灵活,无法支持 CC auth 服务等其他东西。

于 2012-08-20T21:42:33.207 回答
0

Spring框架呢?

http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#transaction-programming-model

假设“信用卡收费”和“创建邮件标签”涉及插入不同的数据库和消息队列,您可以通过 Spring 事务回滚所有这些操作。

于 2015-05-03T07:52:14.767 回答