关于事务的问题

08-09-01 yongbuyanbai
今天突然想起了JAVA事务处理,在我印象当中事务处理应该是从数据库理论中产生的,仅仅是针对数据库的操作,好象这样理解不是很准确,但是在其他方面又没有应用过,比如在项目中有这样的问题,前台通过树显示目录层次结构,这个是通过配置文件读取的,而对应的文件目录结构也需要在硬盘上建立,所以完成一个操作需要既对配置文件进行写操作,也要对文件进行写操作,这两个操作必须同时完成,否则会出现数据不一致的情况,这样的事务处理如何来做啊?

如果事务仅仅是针对数据库的操作来说的,那么类似我项目中的这种情况需要自己在发生异常的时候自己做处理吗?也就是要把操作前的状态自己保存,然后到发生异常的时候恢复?

所以对于事务理解的不是很好,而且项目中除了数据库操作用到事务,其他的有可能引起不一致的操作没有采用事务进行操作,不知道JAVA事务处理是否是针对所有操作都适用啊?而且事务处理的实现方式是怎么样的呢?请banq和道友谈谈!!

[该贴被yongbuyanbai于2008-09-01 23:21修改过]

              

banq
2008-09-02 20:13
Java事务典型几个部分: 应用程序, the transaction processing monitor (简称TPM), 和一个或多个resource managers (RMs 比如数据库). RMs 是保存应用状态,可以是数据库也可以是JMS服务器或其他事务资源. TPM 协同RM活动以保证事务要么是1,要么是0的实现(all-or-nothing)

Java事务其实也是一个Exception管理机制,当你启动一个事务过程中,抛出任何Exception都可以使事务中断回滚。

由于JavaEE服务器没有提供文件读写RM,那么你只有自己做这些工作,相关文章:

http://www.ibm.com/developerworks/java/library/j-jtp0305.html

yongbuyanbai
2008-09-04 14:55
那请问banq ,对于文件操作的事务,在实际项目中确实存在,如果对于这样的情况,我们应该如何的处理,能否给一下思路?比如写入两个文件的操作必须同时完成,我们怎样放置数据不一致,如果出现异常,回滚,但是如果在回滚的时候掉电,怎么办,感觉很烦琐,但是必须要考虑程序的健壮性!请banq指点!!!!

猜你喜欢