Я столкнулся с этой проблемой, пытаясь отправить почту с помощью javax.mail из веб-приложения на веб-сервере под управлением Java 7. Внутренние адреса почтового сервера не удались с «недоступной сетью», несмотря на то, что telnet и ping работают с одного и того же хоста , и в то время как внешние почтовые серверы работали. Я пробовал
System.setProperty("java.net.preferIPv4Stack" , "true");
в коде, но это не удалось. Таким образом, значение параметра, вероятно, было ранее кэшировано системой. Установка аргумента ВМ
-Djava.net.preferIPv4Stack=true
в скрипте запуска веб-сервера.
Еще одна догадка: в очень маленькой целевой программе тестирования установка системного свойства в коде выполнена. Таким образом, параметр, вероятно, кэшируется при использовании первого Socket, вероятно, не только при запуске JVM.
Отключение IPv6 для работы с некоторой ошибкой, имеющейся у вас в коде, просто накапливает проблемы на будущее. Исправьте реальную проблему и избавитесь от головной боли позже. – Flexo
Хотелось бы узнать, почему вы считаете, что вам нужно отключить IPv6. Возможно, есть законная причина, но я еще не видел ее ... –
@BrianKnoblauch Вот вы: [authbind] (http://manpages.ubuntu.com/manpages/hardy/man1/authbind.1.html) работает только с IP4. – maaartinus