Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使数据库更改导致web客户端视图更新_Java_Mysql_Jsp_Jpa_Comet - Fatal编程技术网

Java 如何使数据库更改导致web客户端视图更新

Java 如何使数据库更改导致web客户端视图更新,java,mysql,jsp,jpa,comet,Java,Mysql,Jsp,Jpa,Comet,环境:Linux上的JavaEE7、Glassfish 4、MySQL 5.7,在带有512MB ram的ARM7服务器上,应用程序必须节省内存! 应用程序:一个数据库驱动的Java web应用程序,为运行默认浏览器的Android 4.0的多个Android平板电脑客户端提供服务 客户端将有两种基本用户类型:生产者和消费者。生产者生成显示在消费者浏览器上的任务。当生产者创建一个新任务时,如果所有登录的使用者的浏览器上都显示了TaskList viewTaskList.jsp,并且显示了挂起状态

环境:Linux上的JavaEE7、Glassfish 4、MySQL 5.7,在带有512MB ram的ARM7服务器上,应用程序必须节省内存! 应用程序:一个数据库驱动的Java web应用程序,为运行默认浏览器的Android 4.0的多个Android平板电脑客户端提供服务

客户端将有两种基本用户类型:生产者和消费者。生产者生成显示在消费者浏览器上的任务。当生产者创建一个新任务时,如果所有登录的使用者的浏览器上都显示了TaskList viewTaskList.jsp,并且显示了挂起状态,则该任务应立即显示在浏览器上。使用者从任务列表中选择任务并处理它们doTask.jsp。当使用者选择as任务时,应将其标记为在所有其他任务列表显示中工作,且不可选择。如果打开任务的使用者单击“取消”按钮,则所有任务列表上的任务状态都应更改为“挂起”。当任务完成时,它会被标记为已完成,并且应该从显示任务列表视图的任何使用者浏览器中消失


我正在学习JavaEE编程,还不精通JPA和JSF,但了解基本概念。从我在这里和其他地方看到的情况来看,我认为Comet和/或JQuery/AJAX可能会帮助我解决这个问题,但我不知道如何使用它们。我需要基本的指导,了解如何让数据库更新导致消费者显示的更改,而不让消费者请求更改。解决方案的一部分是向MySQL数据库添加一个或多个触发器吗?

您需要在这里实现轮询模型。在GUI上实现一个脚本,该脚本应该每n秒进行一次服务器调用,带来最新的数据并显示在GUI上,显然在服务器端,您需要能够带来数据并生成响应的代码

要实现轮询,可以将函数设置为在x时间之后调用

window.setInterval(dbCallFunction, x);
一旦函数调用,进行服务器调用,返回结果,就可以再次设置函数间隔

有很多javascript库可以为您解决这个问题,我建议您使用JQuery,下面是

干杯

轮询无法扩展

与旧浏览器的回退一起使用

你可以试着自己设置,但这是一个PITA

您可以使用像Pusher这样的WebSocket服务

基本上,您设置了一个客户端订阅的WebSocket频道。他们订阅。当您想要通知他们时,可以在服务器上调用notify方法,然后将其发送到所有客户端

您可以在Java中执行此操作,甚至可以直接在数据库(如Postgres)中使用NOTIFY函数执行此操作

window.setInterval(dbCallFunction, x);