我已配置2个节点在同一群集中运行。一个节点是主服务器,第二个节点是备用服务器。因此,仅当主服务器关闭时,第二个节点才应处于活动状态。如果一个Jboss节点发生故障,则通知第二个节点故障吗?如何编写代码以在其他节点发生故障时得到通知。我知道我可以使用一些infinispan库来读取群集信息。但是我认为我无法读取集群中节点的状态。我使用配置standalone-full-ha.xml启动jboss实例。 有一篇有关发现集群成员的文章。但这对我没有太大帮助。因为我需要了解活动代码并实现一些将在活动服务器上运行的代码。
http://www.mastertheboss.com/jboss-server/jboss-cluster/jboss-cluster-discover-cluster-members
编辑:我需要的功能是在实现之后。 JBoss EAP 6.4不包含wildfly api。当我通知成员资格更改时,我将其他Jboss实例设为主要实例。我在JBoss EAP 6.4中需要此功能
@Singleton(name = "ClusterEJBEJB")
@Startup
public class ClusterEJBBean implements Listener {
@Resource(lookup = "java:jboss/clustering/group/ejb")
private Group channelGroup;
@PostConstruct
public void check() {
channelGroup.addListener(this);
}
@Override
public void membershipChanged(List<Node> prev, List<Node> curr, boolean merge) {
for (Node node : prev)
System.out.println("PREVIOUS CUSTER VIEW: " + node.getName() + " " + node.getSocketAddress());
System.out.println("==================================================");
for (Node node : curr)
System.out.println("NEW CLUSTER VIEW " + node.getName() + " " + node.getSocketAddress());
System.out.println("==================================================");
System.out.println("Merged ? " + merge);
}
}