Java EE使用有状态会话bean进行2个用户会话?

时间:2011-04-04 01:44:58

标签: java ejb-3.0

我正在尝试构建一个基于Java web的游戏。我想知道如何为两个用户使用有状态会话bean的实例。我的游戏将是一个双人游戏,我的教授说最简单的方法就是让两个玩家的HttpSession都引用同一个有状态会话bean,但经过多次谷歌搜索,我无法弄清楚为两个人找到相同的bean,而不是创建一个新的。

感谢任何输入, -Duffy

2 个答案:

答案 0 :(得分:0)

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

然而,对于你想要做的事情,我可能会建议使用共享的集群缓存解决方案(例如memcached,JBoss Infinispan,Terracotta等)。这似乎已经超出了有状态会话bean的预期用例,因此您可能正朝着某个危险区域前进,并且可能实际上违反了规范(我不确定这一点)。尝试使用针对群集中此类共享状态的技术(例如上面建议的群集缓存解决方案)。

答案 1 :(得分:0)

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