пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Особенности и этапы разработки приложений в концепции MDB. Последовательность шагов реализации и основные объекты.

MDB – это просто MessageListener: класс реализует javax.ejb.MessageDrivenBean и javax.jms.MessageListener.

Первый из этих интерфейсов имеет всего два метода: setMessageDrivenContext  и ejbRemove.  Второй интерфейс имеет лишь один метод onMessage.

Метод setMessageDrivenContext()класса ReservationProcessorBean устанавливает поле экземпляра ejbContext в значение MessageDrivenContext , которое было пере ано в метод. Кроме этого он получает ссылку на JNDI ENC, которую сохраняет в jndiContext. MDB может иметь поля экземпляра, похожие на поля экземпляра сеансового компонента без состояния. Значения этих полей сохраняются в экземпляре MDB в течение всей его жизни и могут многократно использоваться каж ый раз, когда он обрабатывает новое сообщение. В отличие от сеансовых компонентов с состоянием, у MDB нет состояния диалога, и они не предназначаются для одного клиента JMS. Экземпляры MDB применяются для обработки сообщений от нескольких разных клиентов JMS и связаны не с клиентом, а с определенной темой или очередью, от которых  они принимают сообщения.

MessageListener Кроме интерфейса MessageDrivenBean MDB реализуют интерфейс javax.jms.MessageListener ,в котором определен метод onMessage(). Разработчики компонентов реализуют данный метод для обработки сообщений JMS, получаемых компонентом. Именно в методе onMessage() компонент обрабатывает сообщение JMS: 

package javax.jms; 

public interface MessageListener { 

public void onMessage(Message message);  } 

Именно в методе onMessage() выполняется вся прикладная логика

Жизненный цикл экземпляра MDB имеет два состояния: «не существует» и «пул готовых методов». Пул готовых методов похож на пул экземпляров, используемый для сеансовых компонентов без состояния. Когда сообщение направлено экземпляру контейнером, MessageDrivenContext экземпляра MDB изменяется, чтобы отразить новый контекст транзакции. Экземпляр, закончивший обработку, сразу же становится доступным для обработки нового сообщения.  Экземпляры компонентов переводятся из пула готовых методов в состояние «не существует», когда они становятся ненужными серверу.  Это происходит, когда сервер принимает решение уменьшить общий размер пула готовых методов, удаляя из памяти один или несколько экземпляров. Этот процесс начинается с вызова метода ejbRemove()экземпляра.

 

 

 

 


14.01.2019; 12:04
хиты: 130
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь