如何创建实时应用程序

时间:2012-01-18 12:43:55

标签: java java-ee jsf-2 primefaces

使用 jsf2.0和PrimeFaces 3.0.RC2 ,我想让<p:dataTable />包含我的系统请求以及当一个用户持有请求时。我必须更新此请求的状态,并更新他们正在选择系统的所有其他用户<p:dataTable />。 我怎样才能做到这一点? enter image description here

假设此屏幕向10位用户显示,并且当用户更改状态并点击更新按钮时,应反映在所有用户的屏幕上。

如果有任何人在DB中添加新模型,则会出现这种情况。

我的意思是像电子邮件

这样的例子

3 个答案:

答案 0 :(得分:0)

当服务器端发生变化时,其他用户无法被动地知道(通过HTTP)。您必须以某种方式主动轮询服务器并更新UI中的更改。您可以创建一个计时器,它可以检查x秒,或者在不同的浏览器事件上执行(例如,当用户不再使用浏览器窗口然后返回它时)。

然而,最好的办法就是创建一个刷新按钮,这样用户只会在他们真正想要的时候轮询新数据,这样你就不会过度阅读数据库了。

答案 1 :(得分:0)

您需要寻找所谓的pushreverse_ajaxcomet技术。 PrimeFaces通过servlet实现此技术,但仅适用于Jetty服务器。请查看“用户指南”的第6章。

另外,请查看cometD,这是一个成熟的项目,以javascript和其他语言提供Bayeux协议的实现。该项目也使用Jetty,但可以移植到其他符合Servlet 3.0的servlet容器。我在GlassFish服务器上运行它没有任何问题,但在客户端我有一个dojo dataGrid。您可以尝试通过Javascript集成到PrimeFaces dataTable,虽然我还没有完成,但我不确定这是否是一项简单的任务。

答案 2 :(得分:0)

PrimeFaces的推送技术也适用于其他服务器,例如Glassfish。 一个很好的样本,如何实现它: http://www.primefaces.org/showcase/push/counter.jsf