文章詳情頁
java編程思想讀書筆記 - Java編程思想習題請教: 使用動態(tài)代理來編寫一個系統(tǒng)以實現(xiàn)事務?
瀏覽:92日期:2024-02-03 08:12:11
問題描述
大家好,小弟最近在學習《Java編程思想》第四版,學習到第十四章《類型信息》中動態(tài)代理的時候,在習題23后遇到一個問題,使用動態(tài)編寫一個系統(tǒng)以實現(xiàn)事務,不知道該如何解決,特來請教大家,題目如下:
使用動態(tài)代理來編寫一個系統(tǒng)以實現(xiàn)事務,其中,代理在被代理的調(diào)用執(zhí)行成功(不拋出任何異常)執(zhí)行提交,而在執(zhí)行失敗時執(zhí)行回滾。你的提交和回滾都針對一個外部的文本文件,該文件不在Java異常的控制范圍之內(nèi)。你必須注意操作的原子性。
該題目英文原文如下:
謝謝大家。
問題解答
回答1:我覺得,事務處理的難點在于“恢復”這部分,要能恢復就必須得保存現(xiàn)場,或者提供有效的逆操作。當然,逆操作通常屬于業(yè)務范疇,既然這里要求使用動態(tài)代理實現(xiàn),進行狀態(tài)恢復應該相對合適一些。
對于一個文件操作來說,保存狀態(tài)最簡單粗暴的辦法就是保存文件備份。所以我覺得這個動態(tài)代理是這樣的
保存要操作的文件備份
調(diào)用被代理的代碼,進行本身的業(yè)務操作(同時監(jiān)控異常)
發(fā)生異常則恢復文件備份,否則忽略這一步
刪除文件備份
看我的回答能不能給你提供一個思路
標簽:
java
上一條:java - getMethod 的第二個參數(shù)是null和new Class[]{}的區(qū)別?下一條:sping - Spring注入,在XML配置中引用JavaConfig,結(jié)果找不到Config中的bean
相關(guān)文章:
1. 我的html頁面一提交,網(wǎng)頁便顯示出了我的php代碼,求問是什么原因?2. django - 后臺返回的json數(shù)據(jù)經(jīng)過Base64加密,獲取時用python如何解密~!3. tp6表單令牌4. 我在centos容器里安裝docker,也就是在容器里安裝容器,報錯了?5. node.js - node 客戶端socket一直報錯Error: read ECONNRESET,用php的socket沒問題哈。。6. docker 17.03 怎么配置 registry mirror ?7. 老哥們求助啊8. node.js - nodejs中把熱request保存下來,使用JSON.stringify(req)報錯,請問怎么解決?9. mysql分庫分表量級疑問10. javascript - canvas 可以實現(xiàn) PS 魔法橡皮擦的功能嗎?
排行榜

熱門標簽