Транзакции веб-сервисов EJB - PullRequest
0 голосов
/ 16 марта 2010

У нас есть несколько продуктов, которые общаются с использованием различных форм веб-сервисов. Некоторые используют прямой XML, передаваемый через http-запросы (HttpClient). Другие делают удаленные вызовы EJB, а некоторые используют веб-сервисы EJB 3 для методов сессионных компонентов EJB. В версиях HttpClient у нас есть проблемы, когда удаленному концу требуется более 10 минут для завершения операции с базой данных и время ожидания звонящего. В этот момент вызывающая сторона не знает, были ли данные сделаны на удаленном конце. Иногда у нас остаются данные, вставленные на удаленный конец, но время ожидания звонящего и откатывается, так как он не может быть уверен в состоянии.

Я понимаю, что разъединение этих двух элементов и помещение между ними уровня обмена сообщениями, такого как JMS, позволило бы нам гарантировать доставку, а не блокировать, но тогда нам пришлось бы написать много дополнительного кода, чтобы проверить, действительно ли транзакция выполнена или не удалась на удаленном конце. Это, безусловно, вариант, но есть ли хорошие решения для написания этого, когда есть рукопожатие между двумя сторонами, когда вся транзакция завершится неудачей, будь то из-за исключения, тайм-аута или проблемы с сетью, и где в конце взаимодействие между этими двумя приложениями будет точно знать, была ли транзакция в целом успешной или неудачной? Является ли единственный / лучший вариант для вызовов этого удаленного метода сеанса EJB?

1 Ответ

2 голосов
/ 17 марта 2010

Похоже, вам нужна реализация WS-AT. Прочитайте обсуждение на Откат транзакции и веб-сервисы

...