我有几个以集群模式运行的 JBoss 5.1 实例。
我需要找到一种方法如何以编程方式获取形成集群的所有节点/成员(主机:端口)的列表。此代码应该在 EJB 容器内运行。
感谢您的任何提示!
您可以通过查询 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
您可以使用各种框架找出集群成员,包括 JGroups、Infinispan、mod_cluster 和 JMX。尽管本教程是为 AS7 编写的,但我相信其中的大部分内容对 AS5 用户也很有用。问候