如何强制Jetty使用IPv4

时间:2016-11-21 16:23:21

标签: java networking jetty

我使用独立的jetty 9.1.5来部署java webapp。 我希望jetty使用IPv4而不是IPv6,但我无法做到! 当我输入netstat -tnlp时,我可以看到以下结果:

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

...所以这告诉我即使在我的jetty-http.xml文件上,jetty也在使用IPv6:

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

我也使用以下java选项启动jetty:

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

......但无济于事; Jetty一直使用IPv6,我无法强迫它使用IPv4。 有什么想法吗?

1 个答案:

答案 0 :(得分:2)

Java is making the decision to use IPv4 or IPv6,而非Jetty。

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命令行选项/参数几乎毫无意义