我使用独立的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。 有什么想法吗?
答案 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命令行选项/参数几乎毫无意义