【发布时间】:2017-05-11 15:52:46
【问题描述】:
我正在尝试编写一个 Java EE 应用程序,其中多个客户端共享应用程序实例的状态,该实例可能类似于文档。想想像 Google Docs 这样多个用户编辑同一个文档。
到目前为止,我采用的方法是使用实体将状态保存到数据库中,并由客户端进行每次更改。然后,在这样的更改中,我将新状态发送给连接(订阅)到该实例的其他客户端。
我对这种方法的担忧是,当/如果应用程序扩展时会发生什么?目前,任何更改都会注册到数据库,即使只是很短的时间,例如被另一个用户覆盖的快速更改。此外,诸如哪些用户连接到实例和更改历史等信息存储到数据库中。对我来说,在 DB 之间来回切换似乎效率低下。
我的问题是:
- 我可以创建多个实例,它们的各个状态都存储在 EJB 或其他东西中吗?
- 只要有用户连接到该实例,我可以让单个实例一直存在吗?
- 我可以在多个连接的客户端之间共享单个实例的状态吗?
- 我能否检测到最后一个用户何时断开与实例的连接,以便保存其最终状态?
问题可能很大,但我主要感兴趣的是,我应该研究 Java EE 中的哪些概念?
【问题讨论】:
-
我无法完全回答,但应用范围在这里有用吗? docs.oracle.com/javaee/6/tutorial/doc/gjbbk.html
标签: java session jakarta-ee