1

我有几个以集群模式运行的 JBoss 5.1 实例。

我需要找到一种方法如何以编程方式获取形成集群的所有节点/成员(主机:端口)的列表。此代码应该在 EJB 容器内运行。

感谢您的任何提示!

4

2 回答 2

1

您可以通过查询 JMX MBean 服务器以编程方式获取此信息。您将需要查询 MBeanjboss:partition=DefaultPartition,service=HAPartition并查找属性的值CurrentView。这CurrentView将提供集群中的当前节点及其主机/IP 地址。jmx-console您还可以通过将其与来自同一 MBean的数据进行匹配来验证此数据。

您可以将此逻辑放在 EJB 中。您需要注意的一个问题是,您不希望在部署和启动集群服务之前部署 EJB。否则,您的 EJB 可能会抛出异常(例如。InstanceNotFoundException)。因此,在您的 EJB 部署包中depends为集群 MBean ( jboss:service=DefaultPartition)添加一个子句。jboss-web.xml

于 2013-11-12T19:31:28.260 回答
0

您可以使用各种框架找出集群成员,包括 JGroups、Infinispan、mod_cluster 和 JMX。尽管本教程是为 AS7 编写的,但我相信其中的大部分内容对 AS5 用户也很有用。问候

于 2013-11-13T13:40:19.000 回答