logo
Лекции ПИС / Книги / Кулямин - Технологии программирования

Компоненты, управляемые сообщениями

Компоненты, управляемые сообщениями, не доступны для удаленных вызовов, и поэтому не имеют удаленных и исходных интерфейсов. Для создания такого компонента нужно определить только его класс. Обращения к компоненту организуются в виде посылки сообщений к объекту этого класса как к реализующему интерфейс javax.jms.MessageListener. Вместе с этим интерфейсом класс компонента EJB, управляемого сообщениями, обязан реализовывать

интерфейс javax.ejb.MessageDrivenBean.

Первый интерфейс требует определения метода void onMessage(javax.jms.Message), который разбирает содержимое пришедшего сообщения и определяет способ его обработки. Кроме того, нужно определить методы void ejbCreate() для создания компонента и void ejbRemove() для освобождения ресурсов при его удалении.

Жизненный цикл компонента, управляемого сообщениями выглядит в целом так же, как и жизненный цикл сеансового компонента без состояния (Рис. 77). Вся необходимая информация передается такому компоненту в виде данных обрабатываемого им сообщения.

Пример реализации класса компонента, управляемого сообщениями, приведен ниже. Данный компонент получает идентификатор издателя, название и ISBN книги и добавляет такую книгу к книгам, изданным данным издателем.

package ru.msu.cmc.prtech.examples;

import javax.ejb.EJBException; import javax.ejb.MessageDrivenBean;

import javax.ejb.MessageDrivenContext; import javax.jms.MapMessage;

import javax.jms.Message;