JavaEE是否为2个用户会话使用有状态会话bean?

JavaEE是否为2个用户会话使用有状态会话bean?,java,ejb-3.0,Java,Ejb 3.0,我正在尝试构建一个基于Java web的游戏。我想知道如何为两个用户使用有状态会话bean的实例。我的游戏将是一个两人游戏,我的教授说实现这一点最简单的方法是给两个玩家的HttpSession提供一个对同一个有状态会话bean的引用,但是在多次google搜索之后,我不知道如何为两个人找到同一个bean,而不是创建一个新的 谢谢你的意见, -Duffy您必须以某种方式在两个httpsession之间共享对bean的引用。这说起来容易做起来难,尤其是在多台服务器上运行时。如果在一台服务器上运行,理

我正在尝试构建一个基于Java web的游戏。我想知道如何为两个用户使用有状态会话bean的实例。我的游戏将是一个两人游戏,我的教授说实现这一点最简单的方法是给两个玩家的HttpSession提供一个对同一个有状态会话bean的引用,但是在多次google搜索之后,我不知道如何为两个人找到同一个bean,而不是创建一个新的

谢谢你的意见,
-Duffy

您必须以某种方式在两个httpsession之间共享对bean的引用。这说起来容易做起来难,尤其是在多台服务器上运行时。如果在一台服务器上运行,理论上可以将引用放入静态hashmap中


然而,对于您想要做的事情,我可能会建议您使用共享集群缓存解决方案(如memcached、JBoss Infinispan、Terracotta等)。这似乎超出了有状态会话bean的预期使用情形,因此您可能正在走向一些危险的领域,并可能实际违反规范(我对此不确定)。尝试在集群中使用这种共享状态的技术(例如上面建议的集群缓存解决方案)。

我想您可以将bean引用存储在应用程序范围中(例如getServletContext().setAttribute(…),两个Http会话可以通过一个公共密钥使用它。但是,如果是多服务器群集,应用程序服务器必须支持跨不同服务器的属性传播。

对于大型站点,群集缓存解决方案是一个好主意,但这似乎是一个学生的想法。也许一个简单的hashmap(带有一些并发控制)更合适?很难说,但你是对的。如果流量是最小的,那么某种共享hashmap是有意义的。嗨,你为什么要这样做?它们必须共享同一个会话对象吗?会话应该是针对单个用户的afaik。但是,您可以让每个会话对象指向一个持久的“游戏”对象。虽然,我完全没有你的要求,所以这个建议只是一个猜测。