Атомарные транзакции между веб-службами, расположенными на одном сервере с использованием одной базы данных

#hibernate #spring #jax-ws #java-metro-framework #acid

#переход в спящий режим #spring #jax-ws #java-metro-framework #acid

Вопрос:

Наша архитектура состоит из веб-служб, разработанных по спецификации JAX-WS с использованием

Metro. Эти службы развернуты на одном сервере приложений Glass Fish как отдельные war

Файлы.Все веб-службы внутренне используют единую базу данных.Уровень datatacess реализован с использованием Hibernate, а Spring используется для реализации транзакций внутри службы. Теперь, когда мы хотим выполнить транзакцию, охватывающую несколько веб-служб, какие подходы возможны?

  1. Нужно ли нам использовать JTA или мы можем избежать этого?
  2. Нужно ли нам использовать спецификацию WS-AtomicTransaction, поддерживаемую Metro?

Ответ №1:

Я отвечаю на свой собственный вопрос, потому что до сих пор нет ответов. Однако будут оценены просмотры на том же. Я считаю, что лучшей архитектурой было бы рассматривать каждую веб-службу как отдельную и использовать WS-AtomicTransactions / WS-Coodrination для транзакций между веб-службами. Это также поможет, когда некоторые веб-сервисы необходимо развернуть в разных доменах glassfish или на разных серверах все вместе для повышения производительности или по каким-либо другим причинам. Внутренне эти службы JAX-WS Metro будут использовать JTA на glassfish для реализации 2PC. Однако это скрыто внутри реализации Metro

Випул Шах