Обновление определенного представления программно из класса слушателя JMS

Мне удалось интегрировать ActiveMQ и создать JMS-потребителя в мое приложение OpenXava. Теперь мне нужно обновить определенное переходное представление с помощью данных, полученных в сообщении, которые должны быть рассмотрены в нескольких примерах, например... как перейти от java-класса слушателя JMS и отправить изменения в текущее представление? ... и предположим, что конкретное представление является текущим!!!, но текущим представлением может быть любое из нескольких возможных представлений во всем приложении!!! ... так? так? ... тогда я подумал, что я сохраню сообщения JMS в какой-то сущности (как временное хранилище в БД), даже если это приведет к низкой производительности, но потом... как я перенесу последние изменения если какой-то пользователь ищет переходный вид.

Я был использован для создания своих веб-приложений с использованием некоторой реализации JSF с включенным ajax, а затем я мог получить сообщение в слушателе JMS, а затем получить ссылку на управляемый bean-компонент jsf и использовать Ajax push для обновления всех сеансов, которые могут быть открыты одним или несколько пользователей смотрят в приложение, так что это всегда создавало своего рода приложение в реальном времени, которое обновляет любое открытое представление (если оно просматривается пользователем).

Итак, есть ли способ сделать это с помощью класса слушателя JMS в моем приложении OX?

Заранее спасибо,

1 ответ

Решение

Опцией может быть использование JavaScript для регулярного вызова, чтобы узнать, добавлена ​​ли новая запись в таблицу или что-то еще, и обновляется ли регистр.

Если вы любите жизнь, вы можете создать портлет на этой странице с помощью кода JavaScript. Этот код может выполнять вызов с использованием DWR, а при наличии новых данных он может напрямую вызывать действие "CRUD.refresh".

Что-то вроде этого:

refreshData = function() {
   openxava.executeAction('YourApplication', 'YourModule', '', false, 'CRUD.refresh')
   setTimeout('refreshData()', 5000);
}
setTimeout('refreshData()', 5000);

Я не тестировал этот код, поэтому, конечно, он не работает как есть. Примите это как идею.

На самом деле, это подвох. В идеале OpenXava будет иметь прямую поддержку кометы, это можно сделать, просто вызвав метод на сервере. Как вы думаете, стоит ли добавлять кометную поддержку в OX?

Другие вопросы по тегам