Я пытаюсь восстановить состояние объекта в исключениях. Мой код похож на: *
public class DeuceTXTest
{
@Atomic
public void myTransactionMethod(HashMap<String, String> myHashMap)
{
myHashMap.put("s2", "two");
if(8>5)
throw new NullPointerException();
}
public static void main(String[] args){
HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap.put("s1", "one");
System.out.println("Prior TX :: "+hashMap);
DeuceTXTest txTest = new DeuceTXTest();
try {
txTest.myTransactionMethod(hashMap);
} catch (Exception e) {
System.out.println(e);
}
System.out.println("Post TX :: "+hashMap);
}
}
Я добавил -javaagent:myDir/deuceAgent.jar
в качестве VMArgument во время работы на затмении.
Ожидаемый результат ::
Prior TX :: {s1=one}
java.lang.RuntimeException
Post TX :: {s1=one}
Фактический результат ::
Prior TX :: {s1=one}
java.lang.RuntimeException
Post TX :: {s2=two, s1=one}.
Также, пожалуйста, предложите мне лучшие примеры для двойного восстановления / восстановления состояния объекта при откате транзакции или при возникновении исключения.