Проблема с получением последнего имени хоста в Java - PullRequest
0 голосов
/ 27 мая 2020

У меня проблема с получением обновленного имени хоста в Java в CentOS 7.6. Вот мой сценарий:

  1. В моем ящике 4 сетевых адаптера, из которых 1 NI C используется и подключается к сети
  2. Пользователь делает fre sh установку программного обеспечения в этот ящик с помощью файла ISO
  3. Мой Java процесс запускается после fre sh установки
  4. К этому времени активен и доступен единственный интерфейс обратной петли. Команда "ifconfig" показывает только lo, а "ifconfig -a" показывает все 4 сетевых адаптера без IP и lo.
  5. Мое приложение Java получает имя хоста с помощью вызова "InetAddress.getLocalHost().getHostName()". Оно возвращает "localhost.localdomain", что ожидается как IP для eth0 и имя хоста еще не установлены.
  6. Теперь пользователь устанавливает IP-адрес для eth0, также задается имя хоста. Программное обеспечение внутренне обновляет следующее:

    • установить имя хоста с помощью linux команды hostname
    • updates / etc / hostname
    • Сделать недействительным кеш nscd (используя команду 'nscd -i hosts')
    • добавить запись для нового IP-адреса и имени хоста в / etc / hosts
    • обновляет HOSTNAME = в / etc / sysconfig / network
    • HOSTNAME env переменная также установлена ​​в Linux
  7. Отображается проверенный вывод команды 'hostname' в Linux терминале и пользовательский set-hostname. Linux команда 'hostname -i' разрешает только что установленный IP.

  8. Мое ранее запущенное приложение Java, которое все еще работает, теперь снова выполняет тот же вызов 'InetAddress.getLocalHost().getHostName()'. Но даже на этот раз он возвращается как 'localhost.localdomain' вместо настроенного имени хоста.

Я подумал, не вызывает ли кеширование InetAddress проблему. Пытался отключить флаги безопасности networkaddress.cache.ttl и networkaddress.cache.negative.ttl, но все равно не повезло.

Есть идеи по этой проблеме? Рекомендуется ли в этом случае использовать InetAddress.getLocalHost().getHostName().

С уважением, Шрини

...