2016-11-21 5 views
1

Я использую автономный причал 9.1.5 для развертывания java webapp. Я хочу, чтобы причал использовал IPv4 вместо IPv6, но я не могу этого сделать! Когда я типа netstat -tnlp я могу увидеть следующий результат:Как заставить Jetty использовать IPv4

tcp6  0  0 127.0.0.1:554   :::*     LISTEN  27535/java 

... Так что мне говорит мол использует IPv6, даже если на моем jetty-http.xml файле у меня есть:

<Set name="host"><Property name="jetty.host" default="127.0.0.1" /></Set> 

Я также начиная причал со следующими вариантами java:

-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses 

... но безрезультатно; Jetty продолжает использовать IPv6, и я не смог заставить его использовать IPv4. Любые идеи?

ответ

1

Java is making the decision to use IPv4 or IPv6, а не причал.

Jetty 9.1.5 очень старый, подумайте о модернизации, по крайней мере, серии Jetty 9.2.x.

Пример 127.0.0.1:554 не является локальным адресом IPv6, что-то не работает с вашим выходом netstat.

Укажите jetty.host в вашем ${jetty.base}/start.ini, не редактируйте jetty-http.xml.

Важное примечание: не редактируйте, не изменяйте, не удаляйте, не переименовывайте, не перемещайте и т. Д. Любой контент в вашем ${jetty.home}. Укажите свою конфигурацию в ${jetty.base}.

Вы пытались подключиться к вашему работающему серверу с помощью 127.0.0.1:554? (Это вероятно, будет работать)

Если вы не хотите Java по умолчанию для IPv6, то параметр командной строки Java будет выглядеть следующим образом ...

$ cd /path/to/mybase 
$ java -Djava.net.preferIPv4Stack=true -jar /path/to/jetty-dist/start.jar 

Однако, если у вас нет стек IPv4 на вашем компьютере (например, не имеющий сетевого интерфейса с адресом IPv4, что является удивительно распространенной установкой), то этот параметр/аргумент java командной строки практически не имеет смысла.

+0

Оказывается, я добавил '' '' -Djava.net.preferIPv4Stack = true''' в JAVA_OPTIONS скрипта '' '' $ {jetty.base}/bin/jetty.sh''', и у него не было эффект. Когда я изменил JAVA_OPTIONS на '' '$ {jetty.base}/start.ini''', тогда это сработало. Не могли бы вы сообщить, почему? – user3621841