Java中的事务文件系统
2009-06-10 22:49
134 查看
Google搜索一把你能找到一些关于事务文件系统的Java实现,而我选择的是Apache的commons-transaction,为什么?因为经验告诉我从 Apache Foundation诞生的软件都是相当优秀的,并且有很完备的文档。但是commons-transaction可能属于例外了,它没有完备的文档,本文就就简单的描述commons-transaction的用法。
1. 下载并安装Jakartu Commons-Transaction
如果使用Maven,在pom.xml文件中添加以下依赖即可
<dependency>
<groupId>commons-transaction</groupId>
<artifactId>commons-transaction</artifactId>
<version>1.2</version>
</dependency>
如果你使用的是Eclipse,或者是用类notepad的工具编写程序,就要从Apache网站上下载库文件。下载的包中包含commons-transaction所依赖的第三方库,添加到classpath中即可
2. 初始化FileResourceManager
FileResourceManager frm = new FileResourceManager(storeDir, workDir, urlEncode, logger);
下面简要的介绍一下构造函数的几个参数(参考JavaDoc)
storeDir String - FileResourceManager只能对这个目录及其子目录中的文件进行操作。
workDir String - 临时目录,事务使用它来存储临时数据。
urlEncode boolean - 表示路径是否需要用URL编码,在例子中我们使用的是false
logger LoggerFacade - 在使用commons-transaction时你必须登记日志,而不能用“System.out”向屏幕上打印。
在构造完FileResourceManager后,就要开启事务了。
frm.start();
当你在启动FileResourceManager后,它会初始化自己的内部状态,现在他会查找还没有完成的事务。事务的状态将会被检查直到状态变为了“STATUS_COMMITTING",FileResourceManager会试图回滚那些失败的事务,如果回滚也失败了,那么事务就会标记为”脏“,并且需要人工干预了。这和数据库事务差不多。
3. 开始一个事务
每个事务都对应一个唯一的ID,在开始事务时必须提供这样一个唯一的ID。如果你不想自己创建一个ID,那么就让FileResourceManager代劳吧。
String txId = frm.generateUniqueTxId();
现在我们有了一个唯一的ID(txId)就可以开始事务了。
frm.startTransaction(txId);
4. 修改资源
事务启动后我们就可以对文件进行操作了,我们可以进行下面的操作:
# copyResource
# createResource
# deleteResource
# moveResource
# writeResource
下面是一个例子,我们首先删除一个文件,然后移动另一个文件
try {
frm.deleteResource(txId, "deleteMe.txt");
frm.moveResource(txId, "fromFile.txt", "destinationFile.txt", true);
frm.prepareTransaction(txId);
frm.commitTransaction(txId);
} catch (ResourceManagerException e) {
e.printStackTrace();
try {
frm.rollbackTransaction(txId);
} catch (Exception e1) {
e1.printStackTrace();
}
}
注:Resource的标识都是相对于storeDir而言的 阅读全文
类别:Java 查看评论
1. 下载并安装Jakartu Commons-Transaction
如果使用Maven,在pom.xml文件中添加以下依赖即可
<dependency>
<groupId>commons-transaction</groupId>
<artifactId>commons-transaction</artifactId>
<version>1.2</version>
</dependency>
如果你使用的是Eclipse,或者是用类notepad的工具编写程序,就要从Apache网站上下载库文件。下载的包中包含commons-transaction所依赖的第三方库,添加到classpath中即可
2. 初始化FileResourceManager
FileResourceManager frm = new FileResourceManager(storeDir, workDir, urlEncode, logger);
下面简要的介绍一下构造函数的几个参数(参考JavaDoc)
storeDir String - FileResourceManager只能对这个目录及其子目录中的文件进行操作。
workDir String - 临时目录,事务使用它来存储临时数据。
urlEncode boolean - 表示路径是否需要用URL编码,在例子中我们使用的是false
logger LoggerFacade - 在使用commons-transaction时你必须登记日志,而不能用“System.out”向屏幕上打印。
在构造完FileResourceManager后,就要开启事务了。
frm.start();
当你在启动FileResourceManager后,它会初始化自己的内部状态,现在他会查找还没有完成的事务。事务的状态将会被检查直到状态变为了“STATUS_COMMITTING",FileResourceManager会试图回滚那些失败的事务,如果回滚也失败了,那么事务就会标记为”脏“,并且需要人工干预了。这和数据库事务差不多。
3. 开始一个事务
每个事务都对应一个唯一的ID,在开始事务时必须提供这样一个唯一的ID。如果你不想自己创建一个ID,那么就让FileResourceManager代劳吧。
String txId = frm.generateUniqueTxId();
现在我们有了一个唯一的ID(txId)就可以开始事务了。
frm.startTransaction(txId);
4. 修改资源
事务启动后我们就可以对文件进行操作了,我们可以进行下面的操作:
# copyResource
# createResource
# deleteResource
# moveResource
# writeResource
下面是一个例子,我们首先删除一个文件,然后移动另一个文件
try {
frm.deleteResource(txId, "deleteMe.txt");
frm.moveResource(txId, "fromFile.txt", "destinationFile.txt", true);
frm.prepareTransaction(txId);
frm.commitTransaction(txId);
} catch (ResourceManagerException e) {
e.printStackTrace();
try {
frm.rollbackTransaction(txId);
} catch (Exception e1) {
e1.printStackTrace();
}
}
注:Resource的标识都是相对于storeDir而言的 阅读全文
类别:Java 查看评论
相关文章推荐
- 用JAVA访问共享文件系统
- Think In Java Chapter 18 IO系统 练习17 计算文件中字符出现次数
- JavaWeb项目开发案例精粹-第2章投票系统-002配置文件及公共类
- (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
- Java利用ImageMagick调用linux系统命令实现Ai或者PSD文件转化为jpg或者png文件
- Java 模拟文件管理系统(仿DOS环境)
- 如何解决java.io.FileNotFoundException: mysql.ini (系统找不到指定的文件。)
- 用java读取各种计算机文件系统的文件列表
- Java 实现对文件系统的监控
- 【详细】如何将Java源码打包成可执行的jar文件(windows&linux系统都是可以执行的)
- Java获取系统文件类型图标并显示在JSP上
- 如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
- Android使用UncaughtExceptionHandler捕获全局异常 android获取手机信息大全Java追加文件内容使用JavaMail发送邮件OkHttp获取系统时间
- JAVA 程序中如何拷贝一个目录下的文件及子目录到另一个目录,如何获取系统环境变量等...
- 关于java系统找不到指定文件的解决方案
- 系统找不到文件C:\ProgramData\Oracle\Java\javapath\java.exe
- Java学习笔记--NIO2文件系统
- 黄聪:Windows 64位系统中安装Android SDK“系统找不到指定的文件Java.exe”解决方法
- Java项目读取配置文件时,FileNotFoundException 系统找不到指定的文件,System.getProperty("user.dir")的理解
- 用java读取各种计算机文件系统的文件列表(转)