我有几个以集群模式运行的 JBoss 5.1 实例。
我需要找到一种方法,如何以编程方式获取形成集群的所有节点/成员(主机:端口)的列表。该代码应该在 EJB 容器内运行。
感谢您的任何提示!
最佳答案
您可以通过查询 JMX MBean 服务器以编程方式获取此信息。您将需要查询 MBean jboss:partition=DefaultPartition,service=HAPartition
并查找属性 CurrentView
的值。 CurrentView
将提供集群中的当前节点及其主机/IP 地址。您还可以通过将其与来自同一 MBean 的 jmx-console
的数据进行匹配来验证此数据。
您可以将此逻辑放入 EJB 中。您需要注意的一个问题是,您不希望在部署并启动集群服务之前部署 EJB。否则,您的 EJB 可能会抛出异常(例如InstanceNotFoundException
)。因此,请在 EJB 部署包的 jboss-web.xml
中为集群 MBean (jboss:service=DefaultPartition
) 添加一个 depends
子句。
关于java - JBoss集群: how to find/list all members forming the cluster,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19927751/