Коннектор Java EE для доставки в EJB вместо MDB

Я пишу адаптер входящих ресурсов (модуль соединителя) для Glassfish 3.1 и заметил в примерах Java EE SDK, что MDB используется для доставки сообщений из EIS в приложения Glassfish. Нужно ли использовать MDB, если целевой объект является EJB? Было бы разумно выполнить поиск JNDI для целевого EJB и доставить его напрямую, полностью избегая MDB?

Спасибо!


person Dario    schedule 11.01.2012    source источник


Ответы (1)


В последнем случае вы выполняете синхронную операцию, тогда как первый подход является асинхронным. В сценариях интеграции приложений (A2A) почти всегда целесообразно реализовать асинхронный интерфейс. Об этом много написано, позвольте мне лишь сослаться на Сама документация по Java, например раздел 6.3.3:

При разработке приложения необходимо решить, использовать ли синхронную или асинхронную интеграцию с его целевыми EIS и существующими приложениями. Для интеграции приложений подходят как синхронный, так и асинхронный подходы к интеграции, и выбор должен основываться на требованиях к интеграции и вариантах использования. Основывайте свое решение на следующих рекомендациях.

  • Требуемое качество услуг. Использование очереди или системы публикации-подписки обеспечивает более высокое качество услуг, таких как маршрутизация и надежная доставка сообщений, чем синхронная связь.
  • Пропускная способность приложения. Асинхронный обмен сообщениями может повысить пропускную способность, поскольку очередь буферизует сообщения, поддерживает маршрутизацию сообщений и гарантирует доставку сообщений.
  • Интеграция транзакций. Модель синхронной связи больше подходит, когда приложению необходимо синхронно выполнять безопасный и транзакционный доступ к одной или нескольким EIS для обработки клиентских запросов. В таких случаях приложение может позволить себе более тесную связь с EIS, чтобы обеспечить более качественную обработку запросов и обработку ошибок.
  • Сложность модели программирования. Модель программирования асинхронной связи более сложна, чем более распространенная модель синхронного запроса-ответа. Хотя асинхронная модель предоставляет больше услуг, ее стоимость заключается в большей сложности приложений и большем количестве работы со стороны разработчиков.

В заключение, может быть, это и не обязательно, но может быть целесообразно внедрить MDB.

person home    schedule 11.01.2012
comment
Спасибо за ответ. Верно, но EJB также поддерживают асинхронные методы. Их можно использовать, если требуется асинхронная обработка. - person Dario; 11.01.2012
comment
@Дарио: Да, но между ними нет механизма обмена сообщениями. Речь идет об асинхронном вызове, а не об обмене сообщениями. В сценарии на основе MDB вы можете определить максимальное количество параллельных MDB, обрабатывающих вашу очередь. У вас есть еще один уровень косвенности (и потенциально вы можете реализовать очередь постоянным способом). - person home; 11.01.2012