Я прошу подходящую архитектуру для следующего веб-приложения Java:
Цель состоит в том, чтобы создать несколько веб-приложений, которые работают с одними и теми же данными. Предположим, что существует банковская система, в которой данные учетной записи могут быть доступны для различных веб-приложений; к нему могут получить доступ клиенты (онлайн-банкинг), сотрудники службы (в основном читают) и отдел администрирования счетов (инструмент администратора). Эти приложения выполняются как отдельные веб-приложения на разных компьютерах, но они используют одни и те же данные и набор общих операций с данными и поисковых запросов.
Возможный подход заключается в создании основного приложения, которое отвечает общим потребностям клиентов, а именно средствам хранения, обработки и поиска данных. Затем клиенты могут вызывать это основное приложение для выполнения своих запросов. Требование заключается в том, что приложения создаются поверх стека Wicket / Spring / Hibernate как WAR-ы.
Чтобы получить картину, вот некоторые из возможных подходов, о которых мы думали:
A Монолитный подход. Создайте одно огромное веб-приложение, которое соответствует всем потребностям (на самом деле это не вариант)
B Подход API. Создайте основной API доступа к базе данных (JAR) для доступа к данным / манипулирования ими. Каждое веб-приложение создается как отдельная WAR, которая использует API для доступа к базе данных. Нет отдельного основного приложения.
C RMI подход. Базовое приложение работает как отдельное приложение (возможно, WAR) и предлагает сервисы через RMI (или HttpInvoker).
D WS подход. Точно так же, как C, но замените RMI на веб-сервисы
E подход OSGi. Соберите все компоненты как модули OSGi, которые работают в контейнере OSGi. Возможно использовать SpringSource DM Server или ModuleFusion. Этот подход не был для нас вариантом по некоторым причинам ...
Надеюсь, я смог прояснить проблему. Мы просто выбираем вариант B, но я не очень уверен в этом. Каковы ваши мнения? Любые другие решения? Каковы недостатки каждого решения?