Это просто логика того, как этого добиться.
Напишите метод для каждой транзакции, как вы хотите. Вероятно, у него есть все свои ресурсы. Подобно тому, как транзакция jdbc будет иметь объект Connection и запрос в качестве требования, файловая операция, если таковая будет иметь путь к файлу, и т. Д.
Так что для 5 транзакций будет 5 разных методов. Вы также можете достичь этого одним способом, но это просто для простоты.
например.
method1(...) throws Exception {
...
// if any exception occurs then control will be passed to caller of this
// method
throw new Exception("1"); // write method number
}
Затем напишите метод как (далее просто шаблон):
public long/void transaction(...) throws Exception
{
try {
this.method1(...);
this.method2(...);
this.method3(...);
} catch (Exception e) {
// get that number in a exception message
// and try to undo all operations numbers less than above number.
// e.g. if that transaction method is any database transaction then
// try to rollback it.
// if it is creation of any file say log file then delete it
// now further logic depends on what the transaction was and how to
// undo it...
}
}
Спасибо.