2016-05-30 5 views
0

В наших системах развертывания мы используем Java для получения полного имени домена для используемой машины развертывания.Получение полного доменного имени на новом сервере с помощью systemd с использованием Java

Мы используем следующий метод: https://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html#getCanonicalHostName--

После перехода на новые серверы мы имеем проблему, связанную с Systemd, что она не разрешает домен:

Caused by: java.net.UnknownHostException: *machineName*: Name or service not known 

Это единственное различие между старой лабораторией, которую мы использовали, и новой, о которой мог подумать наш ИТ-отдел.

Я искал онлайн в течение 2 дней для любого решения, но не смог найти, что является лучшим способом.

Любые идеи?

Редактировать вопрос:

Некоторые выходы, которые я пробовал -

[email protected]:~# hostname 
myd-vm11924 
[email protected]:~# hostname -a 
hostname: Name or service not known 
[email protected]:~# hostnamectl 
    Static hostname: myd-vm11924 
     Icon name: computer-vm 
      Chassis: vm 
      Boot ID: ef97951ccad04febb9856013e750e9ee 
    Virtualization: vmware 
    Operating System: Ubuntu 14.04.2 LTS 
      Kernel: Linux 3.13.0-24-generic 
     Architecture: x86_64 
[email protected]:~# 

ТИА.

+0

Это необычно, что вы используете systemd на Ubuntu 14.04. Он не стал системой init по умолчанию до более поздней версии. Может быть, это как-то связано. Вы пробовали код на Ubuntu 16.04? –

+1

К сожалению, я работаю над тем, что утверждает ИТ, и они поставляют шаблоны и версии Os, которые мы используем (из-за требований безопасности и т. Д.). Я не могу предоставить 16.04, поскольку они еще не поддерживают его. пытаясь получить бюджет для работы с AWS, но не повезло на этом фронте :) – Dvir669

ответ

1

Сначала я бы понял, что другие инструменты возвращают имя хоста, как ожидалось. В частности, инструмент наследия Hostname отчетности:

hostname 

И новый инструмент Systemd специфичные для этого:

hostnamectl 

Если они сообщают правильный ответ и Java нет, у вас есть возможность добавив в свой код рабочий ресурс, чтобы сделать системный вызов этих инструментов, которые возвращают правильный ответ.

В противном случае вы можете указать ошибку с вашим поставщиком Java-инструментов.

+1

Спасибо за ваше предложение, но я уже пробовал, но вы правы - я должен был упомянуть об этом и опубликовать его - отредактировал мой ответ :) – Dvir669