用户登录跟踪

时间:2013-09-23 08:03:39

标签: java-ee jboss

有许多JBoss节点,每个节点都部署了相同的耳朵(Java EE应用程序)。在我的应用程序中,用户可以登录到每个单独的节点,我想跟踪同一用户是否登录到不同的节点。我怎么追踪它?

如果只有一个节点,那么我可以使用全局Map进行跟踪,该全局Map已经登录了所有用户。但是我找不到针对不同节点的解决方案。这可以使用数据库来完成,但我不想因为另一个约束而使用DB。

对此有任何解决方案吗?

1 个答案:

答案 0 :(得分:1)

  1. 选择一个节点作为主节点。每次登录都会向用户注册主用户,而主用户又会保留一个列表。这会产生单点故障(SPOF),但如果它只用于记录,则可能没问题。通过一些努力,您可以消除SPOF。

  2. 使用JGroups之类的多播库。因此,每个节点在登录后通知所有其他节点。所有节点都包含登录用户的本地列表。

  3. 使用JMS主题,让MDB在每个节点上侦听该主题:登录后,会在主题上发布消息,每个节点都可以构建登录用户列表(这个想法) Aash Maharoon在评论中指出,见下文)

  4. 使用JBoss 7考虑Infinispan。它是内置的,对于您的用例,它基本上提供了一个支持群集的java.util.Map。在内部,它使用JGroups。

  5. 第一个选项可以用一些servlet实现(=没有任何额外的库等)。第二个需要另一个库。

    第3个选项需要JMS(JBoss有一个内置的JMS提供程序)。如果节点关闭,它可能会遗漏某些消息。如果这是一个问题,请考虑使用持久主题订阅。示例:Pub-Sub(发送部分相关)和MDB

    第四个选项甚至需要一个“完整的”模块/服务,但它提供了最高级别的抽象。