JSF多个并发客户端

时间:2017-06-27 18:34:04

标签: jsf primefaces concurrency datatable

我有一个Primefaces 6 + Spring 3集成的Web应用程序,其中一个简单的可编辑单元格的Primefaces数据表绑定到一个(Spring)会话范围的支持bean,它从SQL查询填充数据表模型对象,非常标准的东西。单元格编辑会触发更新数据库的ajax调用。它适用于单个用户,并通过了我的所有单用户系统测试。

在部署到生产后,我发现当多个用户打开应用程序时,单元格编辑完全失败。有时编辑会将其发送到数据库,但UI中的单元格会回到未编辑的值。有时,即使页面未刷新,新值也会显示在显示的错误行中。

我模糊地意识到当user2进行编辑时,user1的支持bean中的模型对象变脏了,因此当user1随后进行编辑时,事情可能会出错,但即使user1根本没有编辑也会发生故障。在编辑后,我没有实现将数据从服务器推送到客户端的机制,以保持客户端同步。

数据表中的每一行对应一个不同的对象,该对象具有来自数据库中相应列的(隐藏)ID。因此,我明显误导的想法是SQL更新将应用于正确的数据库行,无论显示的数据有多陈旧,但它们不会。

查询没有“order by”,代码也没有对结果进行排序,所以我想也许不同的HTTP请求和后续的查询执行会以不同的顺序返回行,但我确认它们没有。

我认为将应用程序范围的支持范围确定可能会解决问题,但这无法解决user2进行编辑后user1显示的表已经不同步的问题。

这似乎是一个简单的解决方案的根本问题,简单地逃避了我。这是Ajax严格禁止的情况吗?

0 个答案:

没有答案