Java 如何创建实时应用程序

Java 如何创建实时应用程序,java,jakarta-ee,jsf-2,primefaces,Java,Jakarta Ee,Jsf 2,Primefaces,使用jsf2.0和PrimeFaces 3.0.RC2,我想让包含我的系统请求,并且当一个用户持有请求时。我必须更新此请求的状态,并向所有其他用户更新他们正在操作系统的信息。 我该怎么做? 假设此屏幕显示给10个用户,当其中一个用户更改状态并单击更新按钮时,所有用户的屏幕上都会显示更新按钮 如果有人在DB中添加了一个新的模型,就会出现这种情况 我的意思是像电子邮件这样的例子,当服务器端发生变化时,其他用户不能被动地知道(通过HTTP)。您必须以某种方式主动轮询服务器并更新UI中的更改。您可以创

使用jsf2.0和PrimeFaces 3.0.RC2,我想让
包含我的系统请求,并且当一个用户持有请求时。我必须更新此请求的状态,并向所有其他用户更新他们正在操作系统的信息。 我该怎么做?

假设此屏幕显示给10个用户,当其中一个用户更改状态并单击更新按钮时,所有用户的屏幕上都会显示更新按钮

如果有人在DB中添加了一个新的模型,就会出现这种情况


我的意思是像电子邮件这样的例子,当服务器端发生变化时,其他用户不能被动地知道(通过HTTP)。您必须以某种方式主动轮询服务器并更新UI中的更改。您可以创建一个每隔x秒检查一次的计时器,或者在不同的浏览器事件上执行此操作(例如,当用户不再使用浏览器窗口,然后返回浏览器窗口时)


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

你需要寻找所谓的
push
reverse\u ajax
comet
技术。PrimeFaces通过servlet实现这项技术,但只在Jetty服务器上工作。请参阅《用户手册》第6章


另外,请看一个成熟的项目,该项目以javascript和其他语言提供Bayeux协议的实现。该项目也使用Jetty,但可移植到其他与Servlet-3.0兼容的Servlet容器。我在GlassFish服务器上运行它没有任何问题,但是在客户端我有一个DojoDataGrid。您可以尝试通过Javascript集成到PrimeFaces dataTable,尽管我还没有这样做,并且不确定这是否是一项简单的任务。

PrimeFaces的推送技术也适用于其他服务器,例如Glassfish。 一个很好的示例,如何实现它: