1

尽管我已经在 J​​ava SE 中工作了很长一段时间,但大约一个月前我才开始使用 Java 进行 EE 和 Web,如果这个问题看起来有点幼稚,请原谅......

所以情况是这样的:我正在尝试编写一个基于 JS 的具有实时交互的多人游戏(我们在这个例子中说国际象棋,尽管它是什么特定的游戏并不重要,可以是网球或 w/曾经)。客户端将通过 JS 调用与服务器交互,发送移动等。现在,虽然我可以从一个客户端接收移动并将其直接传递给另一个玩家,但不在服务器上维护游戏状态将意味着放置一个巨大的标志说“欢迎用户 JS 脚本”(这是没有经验的——我自己“破解”了这种垃圾)。这给我带来了我的问题——我如何在几个会话之间共享一个有状态的对象?想到的一个想法是一个单例存储有状态 bean 的 Hashmap & 然后每个会话都可以通过它的哈希来检索 bean,但我不知道这是多么正确(对于这样一个相当常见的事情来说,它似乎相当复杂)。将它与应用程序范围联系起来似乎也有点矫枉过正......

PS我确实知道该对象需要并发管理等,我似乎无法弄清楚如何共享它......

编辑:很抱歉我之前没有提到它——使用 Glassfish,EE6。

4

2 回答 2

0

您有一个根据 Seam 框架文档定义的业务流程场景,如下所示

业务流程跨越与多个用户的多次交互,因此该状态在多个用户之间共享,但以明确定义的方式。当前任务决定了当前的业务流程实例,业务流程的生命周期是在外部使用流程定义语言定义的,因此业务流程划分没有特殊的注解。

这里可以看到一个Seam业务流程管理教程

注意 Seam在幕后使用JBoss BPM来处理其业务流程上下文。如果您只想使用普通的 JBoss BPM 功能,您可以在此处查看如何与 JBoss 集成

另请参阅JBoss BPM 用户指南

于 2010-09-22T03:25:27.740 回答
-1

解决了。通过 ServletContext 共享它,我最初认为这不起作用,因为 FacesServlet 是一个单独的,认为它也像一个不同的容器一样。

于 2010-09-24T11:43:18.330 回答