Распределенная транзакция между несколькими приложениями в Spring
В настоящее время у меня есть набор веб-приложений в стиле ERP, собранных на вершине Spring 3. Приложение развернуто в Tomcat 7.
Система разработана некоторое время назад без четко определенной архитектуры. Каждое приложение состоит из 3 частей (как подпроекты). API: определение моделей и интерфейсов, IMPL: сервисный уровень и WEB.
Текущее расположение системы, как показано ниже.
Финансовый API + IMPL включен в модуль инвентаризации для обеспечения управления транзакциями. Ранее мы пытались разделить инвентаризацию и финансы на различные веб-приложения с помощью вызовов REST, но столкнулись с проблемой управления транзакциями. В настоящее время мы занимаемся @Autowiring the Financial Impl напрямую в службы инвентаризации. Например, когда выставляется счет на продажу, финансовые операции и операции инвентаризации должны выполняться в одной транзакции.
Теперь, как уже ожидалось, проблемы с этим подходом всплывают. Система инвентаризации очень тяжелая, так как она требует загрузки дублирующего финансового уровня.
Я думаю, что внедрение промежуточного программного обеспечения для обмена сообщениями, такого как HornetQ или ActiveMq, было бы лучшим вариантом, как показано ниже.
Мои вопросы:
Как я могу добиться централизованного управления транзакциями между финансами и запасами?Есть ли здесь преимущество, если я использую сервер Java EE, такой как jBoss?Если я перенесу одно из приложений в другой экземпляр jboss, работающий на другом сервере, могу ли я по-прежнему иметь централизованные транзакции?