2

JBoss 似乎有一组非常简单的注释/配置,用于集群和负载平衡会话 bean,但我在 GlassFish 3.x 文档中没有看到相同的功能。

假设我有MyStatefulBeanMyStatelessBean豆子。对于他们两个,我想要以下功能:

  • 我希望能够创建一个 bean 集群(任意数量或规模)并将它们放在一个软件负载均衡器后面,该负载均衡器将循环 bean;和
  • 如果 1 个集群 bean 因任何原因失败,我希望将其从池中取出

GlassFish 免费/(社区版)甚至支持这个还是我必须自己实现这个?

与第一个问题相切:集群/负载平衡是否对有状态 bean 有意义?我不认为现在我想到它......但这个问题仍然适用于两种类型的豆子,除非另有证明!

4

2 回答 2

1

如果您计划通过远程调用来调用 bean,是您正在寻找的高可用性指南中的章节。

有状态 bean 的故障转移是有意义的,但负载平衡也是可能的。请记住,它有它的限制,最大的限制是不能使用扩展的持久性上下文。

  • bean 的池大小在 EJB 服务设置中指定,并且可以glassfish-ejb-jar.xml为特定 bean覆盖
  • AFAIK 这就是 EJB 规范所说的 - 当发生系统异常(这包括未经检查的异常)时,bean 被销毁。
于 2012-07-05T08:29:28.553 回答
1

首先,如果要在失败时保留会话状态,则需要为应用程序启用高可用性。如果使用管理控制台,部署应用程序屏幕上有一个复选框。如果您从命令行进行部署,请使用“asadmin deploy --availabilityenabled=true --target mycluster myapp.ear”。

查找 bean 时,生成的 bean RMI 代理/存根具有所有可用集群 GlassFish 实例的列表。服务器的顺序是随机生成的,RMI 存根将选择列表顶部的服务器。这就是负载在集群中分布的方式。如果远程服务器发生故障,则选择列表中的下一个服务器。如果远程 bean 是有状态会话 bean,则会话在故障转移时保留。

正如@pdudits 提到的,请阅读有关该主题的文档以获得更深入的报道。

希望这可以帮助!

于 2012-07-05T16:59:06.480 回答