Я столкнулся с этой самой проблемой, пытаясь отправить почту с помощью javax.mail из веб-приложения на веб-сервере, работающем под управлением Java 7. Внутренние почтовые серверы потерпели неудачу из-за "недоступности сети", несмотря на то, что telnet и ping работают с одного хоста, и пока работали внешние почтовые серверы. Я пытался
System.setProperty("java.net.preferIPv4Stack" , "true");
в коде, но это не удалось. Таким образом, значение параметра, вероятно, было ранее кэшировано системой. Установка аргумента VM
-Djava.net.preferIPv4Stack=true
в скрипте запуска веб-сервера сработало.
Еще одно свидетельство: в очень маленькой целевой тестовой программе установка системного свойства в коде сработала . Таким образом, параметр, вероятно, кэшируется при использовании первого Socket, вероятно, не только при запуске JVM.