Как установить java.сеть.preferIPv4Stack=true во время выполнения?
Мне нужно отключить IPv6. Для этого документация java указывает на установку свойства jvm java.net.preferIPv4Stack=true
.
но я не понимаю как это сделать из самого кода.
многие форумы продемонстрировали это из командной строки, но мне нужно сделать это во время выполнения.
6 ответов
можно использовать System.setProperty("java.net.preferIPv4Stack" , "true");
это эквивалентно передаче его в командной строке через -Djava.net.preferIPv4Stack=true
другой подход, если вы в отчаянии и не имеете доступа к (A) коду или (b) командной строке, то вы можете использовать переменные среды:
http://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-Desktop/html/plugin.html.
специально для java web start установите переменную окружения:
JAVAWS_VM_ARGS
и апплеты:
_JPI_VM_OPTIONS
например
_JPI_VM_OPTIONS= - Djava.сеть.preferIPv4Stack=true
кроме того, в разделе "глобальные параметры Windows" (для общих приложений Java) можно установить на странице плана управления Java на вкладке "Java".
я столкнулся с этой проблемой при попытке отправить почту с javax.почта из веб-приложения на веб-сервере под управлением Java 7. Внутренний почтовый сервер назначения не удалось с "сеть недоступна", несмотря на telnet и ping работает с того же хоста, и в то время как внешние почтовые серверы работали. Я пытался!--3-->
System.setProperty("java.net.preferIPv4Stack" , "true");
в коде, но это не удалось. Таким образом, значение параметра, вероятно, было кэшировано ранее системой. Установка параметра VM
-Djava.net.preferIPv4Stack=true
на веб-сервере сценарий запуска работал.
еще одно доказательство: в очень маленькой целевой тестовой программе установите системное свойство в коде сделал работа. Таким образом, параметр, вероятно, кэшируется при использовании первого сокета, вероятно, не только при запуске JVM.
ну
Я System.setProperty("java.net.preferIPv4Stack" , "true");
и он работает с JAVA, но он не работает на JBoss AS7.
вот моя работа вокруг решения,
добавьте нижеприведенную строку в конец файла ${JBOSS_HOME}/bin / standalone.conf.летучая мышь (сразу после :JAVA_OPTS_SET
)
set "JAVA_OPTS=%JAVA_OPTS% -Djava.net.preferIPv4Stack=true"
Примечание: перезапустить JBoss сервера
вы можете установить переменную среды JAVA_TOOL_OPTS следующим образом, которая будет выбрана JVM для любого приложения.
установить JAVA_TOOL_OPTS= - Djava.сеть.preferIPv4Stack=true
вы можете установить это из командной строки или установить в системные переменные среды, в зависимости от ваших потребностей. Обратите внимание, что это отразится на всех приложениях java, которые работают на вашем компьютере, даже если это интерпретатор java, который у вас есть в частной настройке.