Могут ли несколько вызовов REST участвовать в распределенной транзакции? - PullRequest
1 голос
/ 20 марта 2012

Вот сценарий, и, кстати, я ищу Java-ориентированный ответ.

  1. Код клиента вызывает REST Service A (POST) из приложения провайдера № 1.
  2. Код клиента напрямую обновляет внутреннюю базу данных с использованием JDBC.
  3. Код клиента вызывает REST Service B (POST) из приложения провайдера № 2.
  4. Шаги с 1 по 3 должны выполняться в распределенной транзакции с поддержкой двухфазной фиксации, т. Е. В случае сбоя обновления базы данных на шаге 2, мы хотим отменить процедуру POST на шаге 1. Если POST шага 3 завершается неудачно, мы хотим отменить POST шага 1 и обновление базы данных шага 2.

Есть ли способ, которым мы можем сделать это, используя JTA, не записывая свой собственный код компенсации (чтобы отменить шаги 1 и 2)?

1 Ответ

2 голосов
/ 04 декабря 2012

Вы не можете координировать или управлять распределенной транзакцией, если каждый из участников не поддерживает двухфазную фиксацию независимо.

Таким образом, в этом случае - если ваши REST Services поддерживают два метода, эквивалентных двум этапам транзакции - вы могли бы внедрить менеджер транзакций в своем клиенте.

...