數(shù)據(jù)加載中……
          [Original]Java文件事務(wù)(commons-transaction)

          今天上網(wǎng)看到apache的commons包中提供了一個(gè)Transaction,可以控制文件的事務(wù)。做了測(cè)試,看是否可以成功。

          Commons-Transaction: http://commons.apache.org/transaction/
          下面是測(cè)試的代碼TestTransaction.java:
          Log log = LogFactory.getLog(TestTransaction.class);
            //這個(gè)是commons-transaction包中的類
            LoggerFacade logger = new CommonsLoggingLogger(log);;
            //存儲(chǔ)的路徑
            String toDir = "d:/";
            //臨時(shí)路徑
            String tempDir = "e:/";
            //構(gòu)造函數(shù)的第三個(gè)參數(shù):false,標(biāo)識(shí)是否encoding文檔的url,這個(gè)一般不需要設(shè)置為true
            FileResourceManager frm = new FileResourceManager(toDir, tempDir, false, logger);
            //這標(biāo)識(shí)frm的狀態(tài)為start
            frm.start();
            //下面需要frm的狀態(tài)為start
            String txId = frm.generatedUniqueTxId();
            try {
             //開啟Transaction
             frm.startTransaction(txId);
             frm.deleteResource(txId, "RFID.rtf");
          //   throw new Exception("sdf");
            } catch (Exception e) {
             try {
              //回滾事務(wù)
              frm.rollbackTransaction(txId);
             } catch (ResourceManagerException e1) {
              // TODO Auto-generated catch block
              e1.printStackTrace();
             }
            }
            //提交事務(wù)
            frm.commitTransaction(txId);
          在這個(gè)application運(yùn)行過程中,會(huì)在tempDir產(chǎn)生一個(gè)臨時(shí)目錄(是由一些阿拉伯?dāng)?shù)字和字母組成的),里面有兩個(gè)文件夾:change和delete,還有一個(gè)日志transaction.log,而要操作的目錄就會(huì)在delete目錄中。事務(wù)的過程也是這樣的:先將file存放的tempDir,然后監(jiān)控transaction的狀態(tài),如果commit,它就會(huì)將file寫到destination中,然后刪除tempDir。不過,既然apache已經(jīng)有了這個(gè),就可以直接拿來用了.commons-transaction,還支持jta的事務(wù),希望將來會(huì)更加強(qiáng)大.

          posted on 2008-01-17 09:46 牛浪de流 閱讀(2357) 評(píng)論(1)  編輯  收藏 所屬分類: Framework

          評(píng)論

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

          為什么要在最后提交事務(wù)呢?我覺得是不是因該在
          frm.deleteResource(txId, "RFID.rtf");之后、
          } catch (Exception e) {之前
          提交事務(wù)?

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 盐山县| 卢龙县| 基隆市| 长海县| 宣威市| 鹤岗市| 富平县| 于田县| 成安县| 电白县| 镇雄县| 永善县| 金湖县| 江华| 蒙城县| 阳高县| 望谟县| 武穴市| 沈阳市| 江永县| 泰州市| 古蔺县| 邯郸县| 鸡东县| 比如县| 大埔区| 宁海县| 中方县| 措美县| 霍城县| 东丽区| 外汇| 佛学| 会昌县| 邹城市| 许昌县| 漳浦县| 汉阴县| 奉节县| 醴陵市| 邮箱|