Удаленный опрос в ManagedBean и уведомление клиента о просмотре с помощью push
У меня есть представление jsf, которое показывает некоторые данные из управляемого компонента (viewcope) в таблице, которая извлекается удаленно.
В настоящее время данные обновляются путем опроса из клиентского представления с использованием компонента опроса primefaces.
Этого недостаточно, так как большая часть трафика отправляется клиенту, и теперь, когда Primefaces поддерживает push-запрос к серверу, я хочу перезагрузить данные и отправить их в представление клиента, если данные были изменены.
Это должно быть реализовано путем опроса с веб-уровня на уровень приложения, вызывающего метод, подобныйhasChanged(...)
, Если данные изменены, веб-уровень отправляет клиенту уведомление для перезагрузки данных.
Текущий опрос клиентов
клиент >> веб-уровень >> приложение-уровень
клиент запрашивает веб-уровень через ajax для данных, который снова запрашивает уровень приложений для просмотра данных и обновлений
Желаемый опрос и толчок веб-уровня
клиент << веб-уровень >> приложение-уровень
веб-уровень опрашивает уровень приложения, если данные изменились и перезагружается от имени, и информирует (толкает) клиента для обновления представления
подходы:
Каков наилучший подход для реализации опроса в управляемом компоненте на веб-уровне?
TimerTask в управляемом бинеПорождение потоков в управляемом компоненте JSF для запланированных задач с использованием таймераДополнительный EJB с аннотацией ScheduleДополнительный EJB с TimerServiceДругой?
Редактировать:
Архитектура: (3-х уровневая)
Сервер1: база данныхСервер2: уровень приложения (EAR с удаленным EJB + Hibernate)Сервер 3: веб-уровень (WAR с JSF 2.0 + Primefaces 3.4)Клиент: Браузер