java编程思想读书笔记 - Java编程思想习题请教: 使用动态代理来编写一个系统以实现事务?

查看:164
本文介绍了java编程思想读书笔记 - Java编程思想习题请教: 使用动态代理来编写一个系统以实现事务?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

大家好,小弟最近在学习《Java编程思想》第四版,学习到第十四章《类型信息》中动态代理的时候,在习题23后遇到一个问题,使用动态编写一个系统以实现事务,不知道该如何解决,特来请教大家,题目如下:

使用动态代理来编写一个系统以实现事务,其中,代理在被代理的调用执行成功(不抛出任何异常)执行提交,而在执行失败时执行回滚。你的提交和回滚都针对一个外部的文本文件,该文件不在Java异常的控制范围之内。你必须注意操作的原子性。

该题目英文原文如下:

谢谢大家。

解决方案

我觉得,事务处理的难点在于恢复这部分,要能恢复就必须得保存现场,或者提供有效的逆操作。当然,逆操作通常属于业务范畴,既然这里要求使用动态代理实现,进行状态恢复应该相对合适一些。

对于一个文件操作来说,保存状态最简单粗暴的办法就是保存文件备份。所以我觉得这个动态代理是这样的

  1. 保存要操作的文件备份

  2. 调用被代理的代码,进行本身的业务操作(同时监控异常)

  3. 发生异常则恢复文件备份,否则忽略这一步

  4. 删除文件备份

看我的回答能不能给你提供一个思路

这篇关于java编程思想读书笔记 - Java编程思想习题请教: 使用动态代理来编写一个系统以实现事务?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆