UnknownHostException при включении JMX в Java 8

Используя Java 7, я могу запустить JVM с JMX, включенным без любых проблем с помощью этих свойств:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=8787

Если я использую Java 8 (сборка Java 1.8.0_45-b14; Java сборка HotSpot(TM) 64-Bit Server VM 25.45-b02, смешанный режим), я всегда получаю ошибку как это:

java.net. MalformedURLException: Локальное неизвестное имя хоста: java.net. UnknownHostException: 185-69-214-74.ded.intelignet.com.br: 185-69-214-74.ded.intelignet.com.br: неизвестная ошибка

Ошибка также происходит, если я добавляю это системное свойство:

-Djava.rmi.server.hostname=185.69.214.74

Однако я могу успешно запустить Java 8, если я не включаю JMX.

Почему я не вижу той же проблемы под Java 7? Что вызывает это и что я должен сделать для предотвращения этой ошибки даже с включенным JMX?

Подробнее:

$ hostname

mybox

$ hostname -i

185.69.214.74

$ host $(hostname -i)

74.214.69.185.in-addr.arpa domain name pointer 185-69-214-74.ded.intelignet.com.br.

Возможное обходное решение должно отредактировать/etc/hosts для добавления этой строки:

185.69.214.74   185-69-214-74.ded.intelignet.com.br

Однако мне не разрешают сделать это, таким образом, я должен найти другой способ решить эту проблему.

1
задан 9 January 2017 в 14:12
1 ответ

После отладки класса java.net.InetAddress , метода getLocalHost я видел, как он вызывает Inet4AddressImpl.getLocalHostName , который возвращает "185-69-214-74.ded.intelignet.com.br", когда я использую '-Djava.net.preferIPv4Stack = true'. Если я опущу 'java.net.preferIPv4Stack', тогда InetAddress.getLocalHost вызовет Inet6AddressImpl.getLocalHostName , который вернет «mybox», и проблема исчезнет.

Другими словами, 'UnknownHostException' возникает только в том случае, если оба этих условия верны:

  • -Djava.net.preferIPv4Stack = true
  • Версия Java = 8

Поэтому я просто опущу -Djava.net.preferIPv4Stack = true , так как я не придумал другого способа исправить это.

3
ответ дан 3 December 2019 в 18:39

Теги

Похожие вопросы