我有几个JBoss 5.1实例在集群模式下运行。
我需要找到一种方法,如何以编程方式获取构成群集的所有节点/成员(主机:端口)的列表。该代码应该在EJB容器内运行。
感谢任何提示!
答案 0 :(得分:1)
您可以通过查询JMX MBean服务器以编程方式获取此信息。您需要查询MBean jboss:partition=DefaultPartition,service=HAPartition
并查找属性CurrentView
的值。 CurrentView
将提供群集中的当前节点及其主机/ IP地址。您还可以通过将此数据与来自同一MBean的jmx-console
的数据进行匹配来验证此数据。
您可以将此逻辑放在EJB中。您需要注意的一个问题是,您不希望在部署和启动集群服务之前部署EJB。否则,您的EJB可能会抛出异常(例如InstanceNotFoundException
)。因此,为您的EJB部署包的depends
中的集群MBean(jboss:service=DefaultPartition
)添加jboss-web.xml
子句。
答案 1 :(得分:0)
您可以使用各种框架找到集群成员,包括JGroups,Infinispan,mod_cluster和JMX。虽然这个tutorial是为AS7编写的,但我相信大部分内容对AS5用户也很有用。 此致