|
|||
TradingActivityDemo - AdditionalСтр 1 из 2Следующая ⇒ 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.
|
|||
|