Соответствие процессу: мы продолжаем работу над проектированием в рамках дисциплины анализа и проектирования рационального унифицированного процесса (RUP). Также рассматриваются некоторые особенности реализации в контексте технологии EJB.
Разновидности компонентов EJB, о которых мы говорили до сих пор, - сеансовые компоненты и компоненты-сущности - основаны на принципе синхронного вызова. Иначе говоря, если сеансовый компонент А хочет получить некоторую информацию от компонента-сущности В, он вызывает метод этого компонента (опосредованно через удаленный интерфейс) и затем ожидает, пока вызываемый компонент не вычислит результат и возвратит его вызывающему компоненту.
В данной главе мы рассмотрим совершенно другой принцип, на базе которого построены недавно введенные в спецификацию EJB в версии J2EE 1.3 компоненты, управляемые сообщениями (message-drivenbeans) или просто компоненты сообщений.
Введение в компоненты, управляемые сообщениями
Этот принцип заключается в том, что от одного процесса к другому передаются сообщения, собственно говоря, блоки данных. Сообщения могут извещать о происшедших событиях, запрашивать данные или отвечать на запросы.
Компоненты, управляемые сообщениями — это компоненты J2EE, разработанные как приемники асинхронных сообщений. Иными словами, другой объект J2EE, например сеансовый компонент, может просто послать такому компоненту сообщение и продолжать свою работу, не ожидая, пока тот соберется обработать это сообщение.
Принцип управления сообщениями дает разнообразные преимущества по сравнению с обычной схемой синхронного вызова.
Например, на его основе сравнительно легко решить задачу извещения о большом количестве событий или передачи большого объема данных. В J2EE для передачи сообщений используется технология JMS (Java Message Service).
Интерфейс JMS
JMS (Java Message Service — служба передачи сообщений Java) представляет собой один из прикладных интерфейсов (API) J2EE. Он позволяет использовать в J2EE различные существующие системы передачи сообщений. Управляемые сообщениями компоненты в J2EE 1.3 должны использоватьJMS для передачи сообщений. JMS поддерживает два способа передачи.
· Двухточечная передача (Point-to-Point). При двухточечной передаче сообщений один из клиентов действует как отправитель сообщения, а другой — как получатель.Поступающие сообщения помещаются в очередь и обрабатываются получателем в порядке их прибытия. По двухточечному принципу работают электронная или "обычная" почта.
· Публикация и подписка (Publish-subscribe). В этой схеме как посылать, так и получать сообщения могут много приложений сразу. Сообщения направляются в тему одним или несколькими приложениями-издателями и принимаются всеми приложениями, которые подписались на эту тему. По похожему принципу работают Web-форумы.
Роль JMS и управляемых сообщениями компонентов в EJB
Как было сказано выше, компоненты, управляемые сообщениями, используют в своей работе JMS. Интересно, что в спецификации EJB не очень определенно говорится о возможности использовать на данный момент другие службы передачи сообщений. Они не исключаются, но не поддерживаются явно. Управляемые сообщениями компоненты построены по образу объектов JMS MessageListener. Для доступа к ним достаточно, чтобы клиент указал правильного адресата JMS, т.е. очередь или тему. Использовать эти компоненты довольно просто.
Зачем нужны сообщения и управляемые ими компоненты
Существует несколько причин, по которым выгодно использовать передачу сообщений и управляемые ими компоненты в приложении уровня предприятия. Эти причины перечислены ниже.
· Развязка частей приложения. Применение сообщений допускает, что разные части приложения могут быть не тесно связаны друг с другом. Это дает больше возможностей для многократного использования, так как единственным общим компонентом остается адресат.
· Гибкость в интеграции. Слабосвязанные системы легко объединять, используя для связи между ними те же управляемые компонентами сообщения.
· Эффективность. Применение сообщений позволяет выделить те элементы логики приложения, которые могут выполняться независимо от основного потока (например, регистрация определенных событий, отправление информационных сообщений по электронной почте). Такой подход позволяет увеличить общую эффективность приложения, так как важнейшие ресурсы (например сеансовые компоненты) смогут не тратить время на ожидание несущественных для приложения действий, а продолжать свою работу и обслуживать новые поступающие запросы.
Конечно, использование JMS приносит с собой некоторые потенциальные проблемы. Во-первых, возникают дополнительные затраты на передачу сообщений и их обработку. Во-вторых, при передаче могут появиться узкие места. В-третьих, появляется потенциальная зависимость успешной работы всей системы от функции передачи сообщений. Для решения каждой из этих проблем можно найти соответствующие приемы. В целом система на базе сообщений имеет значительные преимущества, когда используется грамотно.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.