Вот сценарий и, кстати, я ищу Java-ориентированный ответ.Может ли несколько вызовов REST участвовать в распределенной транзакции?
- Клиентский код вызывает REST Service A (POST) из приложения-провайдера №1.
- Клиентский код напрямую обновляет внутреннюю базу данных с использованием JDBC.
- Клиентский код вызывает REST Service B (POST) из приложения-провайдера №2.
- Шаги 1 - 3 должны выполняться в распределенной транзакции с поддержкой двух фазовых фиксаций, т. Е. При неудачном обновлении базы данных этапа 2, то мы хотим отменить POST 1-го шага. Если сбой POST Step 3 завершен, мы хотим отменить обновление базы данных POST и Step 2 на шаге 1.
Есть ли способ, которым мы можем это сделать, используя JTA без написания собственного кода компенсации (для отмены шагов 1 и 2)?
Большинство из этого возможно с использованием API транзакций Java с ресурсами XA. Однако сложная часть включает в себя отмену запроса POST, вы не можете этого сделать, если приложение-поставщик не имеет для него нестандартной логики. –