我有一个有多个并发用户的JSF应用程序。当用户A提交数据表中的更改(该更改保存在数据库中)时,我希望所选的其他用户立即看到该更改。我目前正在实施websocket,以使用户A的浏览器异步地向其他选定用户的浏览器发送消息,以便他们进行更新。接收到消息的Java脚本会更改DOM,并进行部分提交以保持服务器端同步。
问题在于,部分提交会导致对数据库的冗余写入,就好像所有这些用户所做的更改都与用户A所做的相同。由于它们是相同的数据,因此不会出现不一致(假设没有竞争条件),但是多次不必要的冗余写入是很丑陋的。我不想出于How To Implement Data Caching Across Multiple Sessions In Webapp中概述的原因使用轮询。
有没有办法解决这个问题?