文章详情页
java编程思想读书笔记 - Java编程思想习题请教: 使用动态代理来编写一个系统以实现事务?
浏览:152日期:2024-02-03 08:12:11
问题描述
大家好,小弟最近在学习《Java编程思想》第四版,学习到第十四章《类型信息》中动态代理的时候,在习题23后遇到一个问题,使用动态编写一个系统以实现事务,不知道该如何解决,特来请教大家,题目如下:
使用动态代理来编写一个系统以实现事务,其中,代理在被代理的调用执行成功(不抛出任何异常)执行提交,而在执行失败时执行回滚。你的提交和回滚都针对一个外部的文本文件,该文件不在Java异常的控制范围之内。你必须注意操作的原子性。
该题目英文原文如下:
谢谢大家。
问题解答
回答1:我觉得,事务处理的难点在于“恢复”这部分,要能恢复就必须得保存现场,或者提供有效的逆操作。当然,逆操作通常属于业务范畴,既然这里要求使用动态代理实现,进行状态恢复应该相对合适一些。
对于一个文件操作来说,保存状态最简单粗暴的办法就是保存文件备份。所以我觉得这个动态代理是这样的
保存要操作的文件备份
调用被代理的代码,进行本身的业务操作(同时监控异常)
发生异常则恢复文件备份,否则忽略这一步
删除文件备份
看我的回答能不能给你提供一个思路
标签:
java
上一条:java - getMethod 的第二个参数是null和new Class[]{}的区别?下一条:sping - Spring注入,在XML配置中引用JavaConfig,结果找不到Config中的bean
相关文章:
1. java - mybatis怎么实现在数据库中有就修改,没有就添加2. python - 求一个在def中可以实现调用本def满足特定条件continue效果的方法(标题说不太清楚,请见题内描述)3. MYSQL新建用户设置可以远程访问的问题4. $fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题5. node.js - nodejs和前端JavaScript 字符串处理结果不一样是什么原因?6. 数据库 - mysql 远程可以连接,但是本地连接拒绝?7. mysql 5.7单表300万数据,性能严重下降,如何破?8. mysql 为何insert的时候会有lock wait timeout 异常9. mysql - 我的myeclipse一直连显示数据库连接失败,不知道为什么10. mysql同步数据到elasticsearch用什么工具?
排行榜
![$fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题](http://www.haobala.com/attached/image/news/202205/093622cb60.png)