У меня есть приложение, которое показывает некоторые данные в p: DataTable .... Эта таблица доступна для многих пользователей.Когда один пользователь изменяет запись в таблице (создание, редактирование, удаление), об этом действии уведомляет @ApplicationScoped ManagedBean, который уведомляет все другие сеансы (открытые другими пользователями) о том, что элементы в таблице изменены, затем оннеобходимо перезагрузить из базы данных.Как вы можете видеть, это контроллер, который уведомляет весь сеанс о том, что элементы изменены,
/**
* @author Simone Rondelli
*/
@ManagedBean(name="singleton")
@ApplicationScoped
public class SingletonBean {
private int count;
private HashMap<Class, List<AbstractController>> sessions;
public SingletonBean() {
sessions = new HashMap<Class, List<AbstractController>>();
}
public void addSession(AbstractController session, Class c) {
List<AbstractController> sessionList = sessions.get(c);
if(sessionList == null)
sessionList = new ArrayList<AbstractController>();
sessionList.add(session);
sessions.put(c, sessionList);
}
public void notifyItemsChanged(Class type) {
for(AbstractController a : sessions.get(type)) {
a.prepareList();
a.addWarningMessage("Attenzione i record sono stati modificati!!");
}
}
}
это код в AbstractController, который «пытается» показать сообщение
public void addWarningMessage(String msg) {
//JsfUtil.addWarningMessage(msg);
FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_WARN, msg, msg);
FacesContext.getCurrentInstance().addMessage(null, facesMsg);
}
если вы нажмете клавишу f5, на любой другой странице будут показаны новые записи ... Но я хочу, чтобы сообщения отправлялись во все другие сеансы ... Теперь с моим кодом сообщения отображаются на странице, где выполняется изменение, многиевремя как количество открытых сеансов ... Итак, если у меня есть 3 сеанса с 3 пользователями, и один из них внесет некоторые изменения в таблицу, он увидит 3 сообщения на своей странице, в то время как другие пользователи ничего не увидят.
- Как я могу отправлять сообщения всем сессиям ??