2010-03-16 2 views
0

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

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

ответ

2

Похоже, вам нужна реализация WS-AT. Прочитайте обсуждение на Transaction rollback and web services

+0

Спасибо за информацию, которая выглядит как-то, что мы действительно можем использовать. –