我将Java 1.6,Tomcat和servlet与JDBC和持久性框架结合使用。我知道(并使用)数据库级别的事务,但我想知道是否存在应用程序级别回滚和提交的框架?
我确定这个有一个特定的名称,但是让我编写代码并以比我目前实现它更标准的方式测试以下内容:
- 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)
这是否有意义?
到目前为止,我正在处理所有的逻辑和错误检查......想知道是否有一个很好的框架可以帮助,因为它变得越来越复杂。
答案 0 :(得分:2)
听起来你基本上在考虑software transactional memory。我不会比维基百科摘要做得更好:
在计算机科学中,软件事务存储器(STM)是一种类似于数据库事务的并发控制机制,用于控制并发计算中对共享存储器的访问。它是基于锁的同步的替代方案。此上下文中的事务是一段代码,它执行对共享内存的一系列读写操作。这些读写逻辑上是在一个时刻发生的;中间状态对其他(成功)交易不可见。
这是一个非常有趣的想法,但我还没有意识到它真正以“大方式”发展。我认为它主要限于研究。也就是说,做一些搜索我发现Multiverse, a seemingly halfway interesting implementation之前我没有听说过,但有一个教程和网站......
答案 1 :(得分:0)
对我来说,我们需要一个System.Transactions.TransactionScope端口,其中包含一些可自定义的IEnlistmentNotification实现。也许JDO Transactions已经做了这件事,乍看之下我并不清楚。从表面上看,它似乎不够灵活,无法支持CC auth服务等其他东西。
答案 2 :(得分:0)
Spring框架怎么样?
假设“收费信用卡”和“创建邮件标签”涉及在不同数据库和消息队列中插入,您可以通过Spring事务回滚所有这些操作。