Хелпикс

Главная

Контакты

Случайная статья





TradingActivityDemo - Additional



TradingActivityDemo - Additional

(NetBeans)

К этапу 6

Используем получение сообщений JMS от слоя EJB для нотификации web-клиента о появлении в БД новых продаж

 

1. Для достижения данной цели необходимо реализовать технологию, которая называется «push», причем реализация должна поддерживать обращение из компонент MessageDrivenBeans к представлениям facelets. Такие реализации уже существуют, и мы используем одну из них. В нашем решении в web-проекте уже используется дополнительная библиотека omnifaces, остается задействовать соответствующие ее элементы;

2. В web-проекте в файле web. xml активируем конечную точку специального сокета:

 

< context-param>

       < param-name> org. omnifaces. ENABLE_SOCKET_ENDPOINT< /param-name>

       < param-value> true< /param-value>

< /context-param>

 

3. В ejb-проекте в наш собственный компонент, управляемый сообщениями, в котором уже настроен прием сообщений JMS, (IndexMessageDrivenBean) внедряем готовый компонент:

 

@Inject @Push(channel=" new_sale_channel" )

private PushContext newSalesChannel;

 

4. Там же, в методе onMessage после строк отладочного вывода в консоль, вызываем у внедренного компонента метод отправки особого сообщения в представление, передавая этому методу в качестве аргумента текст из полученного сообщения JMS (со стороны отправителя сообщений JMS в слое EJB изменяем содержимое дополнительного параметра и текста сообщений в соответствии с назначением, например, параметр «тип сообщения» - «нотификация», текст – «появились новые продажи»):

 

newSalesChannel. send(message. getText());

 

5. В web-проекте в файле шаблона index_template. xhtml подключаем дополнительное пространство имен и добавляем в раздел заголовков серверный элемент < o: socket:

 

xmlns: o=http: //omnifaces. org/ui

//…

< o: socket channel=" new_sale_channel" onmessage=" socketListener" />

 

6.  В каталоге веб-ресурсов в файле custom. js нужно реализовать функцию «socketListener», которая будет выполнять действия на фронт-энде для информирования пользователя о появлении новых продаж. Для отладки будем выводить текст полученного сообщения в консоль браузера:

 

function socketListener(message, channel, event) {

console. log(message);

}

 

7. TODO: добавить на главную веб-страницу фрагмент разметки, который будет сигнализировать о появлении новых продаж, дополните соответствующим образом функцию «socketListener». Для оформления внешнего вида фрагмента понадобится добавить код в css.

 

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.