Jgroup получить физический адрес - PullRequest
3 голосов
/ 05 декабря 2011

У меня есть несколько серверов, которые зеркалированы с JGroup. В последнее время наблюдается некоторое неожиданное поведение, когда оно не синхронизировано и основано на журнале, Jgroup будет время от времени отключаться. Я хотел бы написать небольшую программу в коде JGroup для отправки по электронной почте, как только JGroup отключится, и сообщить, какая машина отключилась.

Проблема в том, что, основываясь на JavaDoc, я не могу извлечь физический IP-адрес из члена или представления. Кто-нибудь знает, как я могу это сделать?

Ответы [ 3 ]

3 голосов
/ 22 декабря 2011

Это взлом, но это работает. Команда JGroups заявила, что это опасно, поскольку они могут изменить базовый код в любое время, поэтому используйте с осторожностью.

public void receive(Message msg) {
    String srcIp;   
    Address addr = msg.getSrc();

    PhysicalAddress physicalAddr = (PhysicalAddress)channel.down(new Event(Event.GET_PHYSICAL_ADDRESS, addr));

    if(physicalAddr instanceof IpAddress) {
        IpAddress ipAddr = (IpAddress)physicalAddr;
        InetAddress inetAddr = ipAddr.getIpAddress();
        srcIp = inetAddr.getHostAddress();
    }
}
1 голос
/ 26 июня 2013

Разработать подход Кавина ВонДейлена: получить физический адрес данного канала

jgroups 2.x:

PhysicalAddress physicalAddress = (PhysicalAddress) 
      channel.downcall(
        new Event(
          Event.GET_PHYSICAL_ADDRESS, channel.getAddress()
        )
      );

jgroups 3.x: Channel.downcall () был удален;поэтому Channel.down () был изменен для замены прежних функций.

PhysicalAddress physicalAddress = (PhysicalAddress) 
      channel.down(
        new Event(
          Event.GET_PHYSICAL_ADDRESS, channel.getAddress()
        )
      );

Независимо от версии jgroups, PhysicalAddress вернет строку в виде IP: порт в формате.

0 голосов
/ 05 декабря 2011

Я не уверен, что вы можете, я не смог понять, как тоже.В итоге я добавил IP-адрес узла как часть широковещательного сообщения.Требуется дополнительное кодирование, но это работает.

...