2016-11-21 122 views
1

我正在使用独立jetty 9.1.5部署java webapp。 我想jetty使用IPv4而不是IPv6,但我无法做到! 当我键入netstat -tnlp我可以看到下面的结果:如何强制Jetty使用IPv4

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

...所以,告诉我Jetty是使用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,而不是码头。

码头9.1.5很旧,考虑升级到至少Jetty 9.2.x系列。

示例127.0.0.1:554不是IPv6本地地址,netstat输出中有某些内容关闭。

在您的${jetty.base}/start.ini中指定jetty.host,请勿编辑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

原来,我在'''{{jetty.base}/bin/jetty.sh'''的启动脚本的JAVA_OPTIONS上添加了'''-Djava.net.preferIPv4Stack = true'',并且没有影响。当我修改'''{{jetty.base}/start.ini'''上的JAVA_OPTIONS时,它就起作用了。你能让我知道为什么吗? – user3621841