数据加载中……
[Original]Java文件事务(commons-transaction)

今天上网看到apache的commons包中提供了一个Transaction,可以控制文件的事务。做了测试,看是否可以成功。

Commons-Transaction: http://commons.apache.org/transaction/
下面是测试的代码TestTransaction.java:
Log log = LogFactory.getLog(TestTransaction.class);
  //这个是commons-transaction包中的类
  LoggerFacade logger = new CommonsLoggingLogger(log);;
  //存储的路径
  String toDir = "d:/";
  //临时路径
  String tempDir = "e:/";
  //构造函数的第三个参数:false,标识是否encoding文档的url,这个一般不需要设置为true
  FileResourceManager frm = new FileResourceManager(toDir, tempDir, false, logger);
  //这标识frm的状态为start
  frm.start();
  //下面需要frm的状态为start
  String txId = frm.generatedUniqueTxId();
  try {
   //开启Transaction
   frm.startTransaction(txId);
   frm.deleteResource(txId, "RFID.rtf");
//   throw new Exception("sdf");
  } catch (Exception e) {
   try {
    //回滚事务
    frm.rollbackTransaction(txId);
   } catch (ResourceManagerException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
   }
  }
  //提交事务
  frm.commitTransaction(txId);
在这个application运行过程中,会在tempDir产生一个临时目录(是由一些阿拉伯数字和字母组成的),里面有两个文件夹:change和delete,还有一个日志transaction.log,而要操作的目录就会在delete目录中。事务的过程也是这样的:先将file存放的tempDir,然后监控transaction的状态,如果commit,它就会将file写到destination中,然后删除tempDir。不过,既然apache已经有了这个,就可以直接拿来用了.commons-transaction,还支持jta的事务,希望将来会更加强大.

posted on 2008-01-17 09:46 牛浪de流 阅读(2348) 评论(1)  编辑  收藏 所属分类: Framework

评论

# re: [Original]Java文件事务(commons-transaction) 2012-03-29 12:39 qiangbro

为什么要在最后提交事务呢?我觉得是不是因该在
frm.deleteResource(txId, "RFID.rtf");之后、
} catch (Exception e) {之前
提交事务?
  回复  更多评论    

只有注册用户登录后才能发表评论。


网站导航: