Как установить 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, который у вас есть в частной настройке.