Я настроил 2 узла для работы в одном кластере. Один узел является основным сервером, а второй - резервным сервером. Таким образом, второй узел должен быть активным, только если основной сервер не работает. В случае, если один узел Jboss не работает, второй узел информируется о сбое? Как я могу написать код, чтобы получать уведомления о сбое других узлов. Я знаю, что могу использовать некоторые бесконечные библиотеки для чтения информации о кластере. Но я думаю, что я не могу прочитать состояние узлов в кластере. Я запускаю экземпляры jboss с конфигурацией standalone-full-ha.xml.
Есть статья об обнаружении участников кластера. Но это мне не очень помогает. Потому что мне нужно знать активный и реализовать некоторый код, который будет работать на активном сервере.
http://www.mastertheboss.com/jboss-server/jboss-cluster/jboss-cluster-discover-cluster-members
Edit: функциональность, которая мне нужна, следующая реализация. JBoss EAP 6.4 не включает в себя API-интерфейс wildfly. Когда я сообщу об изменении членства, я сделаю другой экземпляр 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);
}
}