大家好,小弟最近在学习《Java编程思想》第四版,学习到第十四章《类型信息》中动态代理的时候,在习题23后遇到一个问题,使用动态编写一个系统以实现事务,不知道该如何解决,特来请教大家,题目如下:
使用动态代理来编写一个系统以实现事务,其中,代理在被代理的调用执行成功(不抛出任何异常)执行提交,而在执行失败时执行回滚。你的提交和回滚都针对一个外部的文本文件,该文件不在Java异常的控制范围之内。你必须注意操作的原子性。
该题目英文原文如下:
谢谢大家。
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
トランザクション処理の難しさは「回復」の部分にあると思います。回復するには、シーンを保存するか、効果的な逆操作を提供する必要があります。もちろん、リバース操作は通常ビジネス カテゴリに属します。ここでは動的プロキシの実装が必要となるため、状態の回復は比較的適切であるはずです。
ファイル操作の場合、ステータスを保存する最も単純かつ大雑把な方法は、ファイルのバックアップを保存することです。ということで、この動的プロキシはこんな感じだと思います
操作したいファイルのバックアップを保存してください
プロキシされたコードを呼び出して、独自のビジネス操作を実行します(例外を監視しながら)
例外が発生した場合は、ファイルのバックアップを復元します。それ以外の場合は、この手順を無視してください
ファイルのバックアップを削除
私の答えがあなたにアイデアを与えるかどうか見てみましょう
トランザクション処理の難しさは「回復」の部分にあると思います。回復するには、シーンを保存するか、効果的な逆操作を提供する必要があります。もちろん、リバース操作は通常ビジネス カテゴリに属します。ここでは動的プロキシの実装が必要となるため、状態の回復は比較的適切であるはずです。
ファイル操作の場合、ステータスを保存する最も単純かつ大雑把な方法は、ファイルのバックアップを保存することです。ということで、この動的プロキシはこんな感じだと思います
操作したいファイルのバックアップを保存してください
プロキシされたコードを呼び出して、独自のビジネス操作を実行します(例外を監視しながら)
例外が発生した場合は、ファイルのバックアップを復元します。それ以外の場合は、この手順を無視してください
ファイルのバックアップを削除
私の答えがあなたにアイデアを与えるかどうか見てみましょう