我一直在尝试为基于Java EE / JSF / PrimeFaces的应用程序实现会话超时计数器。
基本上,要求就这么简单:用户登录后,将触发时间表/计时器,并且超时时钟开始计时。对此没有特殊事件,当用户从SSO(在我的情况下为Keycloak)重定向时,通过从所有页面共有的XHTML模板调用会话bean方法来触发时钟。
现在,当达到给定的超时时,我想通知用户。这就是问题所在-我想显示对话框或添加消息而无需用户交互。不幸的是,这些都不是可能的,因为我没有FacesContext
(很明显,我也没有PF的RequestContext
),这让我可以做我想做的事情-刷新组件并处理消息...但是FacesContext
在@ManagedBean
的{{1}}方法中不可用,在java.util中也不可用。计时器或更新的执行程序服务(因为此处涉及单独的线程)。
有什么想法或类似的经验吗?将不胜感激任何建议。