大家好,小弟最近在学习《Java编程思想》第四版,学习到第十四章《类型信息》中动态代理的时候,在习题23后遇到一个问题,使用动态编写一个系统以实现事务,不知道该如何解决,特来请教大家,题目如下:
使用动态代理来编写一个系统以实现事务,其中,代理在被代理的调用执行成功(不抛出任何异常)执行提交,而在执行失败时执行回滚。你的提交和回滚都针对一个外部的文本文件,该文件不在Java异常的控制范围之内。你必须注意操作的原子性。
该题目英文原文如下:
谢谢大家。
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
我覺得,事務處理的困難在於「恢復」這部分,要能恢復就必須得保存現場,或是提供有效的逆操作。當然,逆操作通常屬於業務範疇,既然這裡要求使用動態代理實現,進行狀態恢復應該相對合適一些。
對於一個檔案操作來說,保存狀態最簡單粗暴的辦法就是保存檔案備份。所以我覺得這個動態代理是這樣的
保存要操作的檔案備份
呼叫被代理的程式碼,進行本身的業務操作(同時監控異常)
發生異常則恢復檔案備份,否則忽略這一步驟
刪除檔案備份
看我的回答能不能給你一個思路
我覺得,事務處理的困難在於「恢復」這部分,要能恢復就必須得保存現場,或是提供有效的逆操作。當然,逆操作通常屬於業務範疇,既然這裡要求使用動態代理實現,進行狀態恢復應該相對合適一些。
對於一個檔案操作來說,保存狀態最簡單粗暴的辦法就是保存檔案備份。所以我覺得這個動態代理是這樣的
保存要操作的檔案備份
呼叫被代理的程式碼,進行本身的業務操作(同時監控異常)
發生異常則恢復檔案備份,否則忽略這一步驟
刪除檔案備份
看我的回答能不能給你一個思路