2012-01-11 4 views
0

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

Спасибо!

ответ

3

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

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

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

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

+0

Спасибо за ответ. Правда, но EJB также поддерживают асинхронные методы. Они могут использоваться, если требуется асинхронная обработка. – Dario

+0

@ Dario: Да, но между ними нет механизма обмена сообщениями. Речь идет об асинхронном вызове, а не об обмене сообщениями. В сценарии на основе MDB вы можете определить максимальное количество параллельных MDB, обрабатывающих вашу очередь. У вас есть другой уровень косвенности (и потенциально вы можете реализовать очередь в постоянном режиме). – home

+0

Очень хорошо, спасибо за отзывы. – Dario

Смежные вопросы