Зарисовка архитектуры приложения, которому требуется интеграция с корпоративными информационными системами через интерфейсы Web-сервисов и Java API
Основная идеология: В данной архитектуре вынесен "во вне" интеграционный слой - его задачи выполняет прослойка в виде JavaEE-сервера приложения (например: WebLogic, OC4J, JBoss и т.п.). Взаимодействие между ApEx-ом и сервером приложений построено на основе очередей сообщений Oracle Advanced Queuing, т.е. встроенным в СУБД механизмом организации очередей сообщений. Что даёт возможность некоторой балансировки нагрузки на сервер приложений. В нашем случае очередей сообщений две: "для запросов" и "для ответов". На стороне сервера приложения развернуты Message Driven Beans (MDB), которые слушают очередь сообщений "для запросов" и при появлении в ней сообщения обрабатывают его (парсинг; возможен вариант обработки сообщения в Session Bean). В зависимости от результата обработки вызывается метод Session Bean-а, который в свою очередь вызывает Java API или Web-Service корпоративного приложения. После получения ответа данный Session Bean отправляет ответ в очередь сообщений "для ответов", а по появлении в ней сообщения срабатывает процедура обработки в базе данных. Например, вызов Java API (аналогично и для Web-Service) корпоративного приложения:- по нажатию на кнопку в ApEx(может быть любое другое действие) - вызывается хранимая процедура в СУБД;
- данная процедура формирует сообщение и отправляет его в очередь сообщений "для запросов";
- MDB-компонент слушает очередь сообщений и когда в ней появляется сообщение забирает его из очереди "для запросов" и обрабатывает его;
- в зависимости от результата обработки вызывается метод Session Bean-а, который в свою очередь вызывает Java API корпоративного приложения;
- по полученому ответу(от корпоративного приложения) данный Session Bean формирует сообщение и отравляет его в очередь сообщений "для ответов";
- на стороне базы данных для очередь "для ответов" выполняется процедура обработки сообщения и согласно результатам выполняется какое-либо действие (например: изменяются данные с таблице).
Плюсы данного подхода: Интеграционная часть вынесена из базы данных. Что даёт возможность:
- Вынесение интеграционного слоя в том числе на отдельную машину;
- Распределения нагрузки между СУБД и сервером приложений.
- Возможность использования всех интеграционных возможностей платформы Java EE
Минусы данного подхода:
- Требуется дополнительное программное обеспечение ввиде сервера приложения;
- Требуется разработка EJB-компонентов (MDB и Session Beans) на языке Java.
Комментариев нет:
Отправить комментарий