如何让tomcat绑定到ipv4地址?

我最近通过apache solr typo3社区的安装脚本安装了tomcat,并花了最后3天试图弄清楚为什么它不会工作,直到我偶然发现,当我查询通过“lsof -i “,它绑定到ipv6协议。 我已经到处search,大多数说tomcat连接器设置地址为0.0.0.0解决了这个问题,其他人说设置JAVA_OPTS =“ – Djava.net.preferIPv4Stack = true” ; 我试过前者不行,但是后者我不知道该把它放在哪里。 我在某处阅读的一个解决schemebuild议将它放在setenv.sh中,但是在我的tomcat安装中找不到这个文件。 对于此刻的任何帮助,我将不胜感激。 tomcat版本是6.x,操作系统是Ubuntu 11.10。 谢谢

好吧,我终于解决了。 我被指示去尝试这个和亨克的解决scheme。 这两者似乎都不能用于远程虚拟服务器。 我在猜测这个事实,因为我在一个共享的内核空间,所以提供者阻止了这一点。 无论如何,我添加了: JAVA_OPTS= $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses到catalina.sh启动脚本,这似乎已经解决了绑定tomcat到ipv6的问题。

许多人build议更新catalina.sh启动脚本。 是的,该解决scheme将工作,但catalina.sh脚本并不意味着定制/更新。 所有更改应该进入自定义脚本,而不是setenv.sh

注意:默认情况下TOMCAT_HOME/bin/setenv.sh不存在,您需要创build它。 检查catalina.sh脚本,您将看到启动脚本检查setenv.sh存在,如果存在则执行。

所以,我build议你用一行创build新的TOMCAT_HOME/bin/setenv.sh脚本:

 JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true " 

修改catalina.sh的正确语法是:

 JAVA_OPTS=" $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true " 

如果您使用此安装程序:“ TYPO3的Apache Solr ”,则可以更改文件server.xml的地址。
默认指向本地主机,所以请查找127.0.0.1并将其更改为所需的IPv4地址。
不要忘记重新启动Tomcat6以使更改生效。

更新,20120521

请参阅以下有关如何在Ubuntu 11.10上禁用IPv6的评论。

我已经成功在我的Mac上的Virtualbox-VM上进行了testing。
server.xml的连接器端口8080的地址已从127.0.0.1更改为0.0.0.0。
然后,禁用IPv6将使“tcp6”消失,因此将其绑定到仅IPv4地址。

启用IPv6之前/之后:

# netstat -anp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 1972/java

/ IPv6禁用后:

# netstat -anp | grep 8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2045/java

虽然可能不是首选方法,但我发现在内核级别禁用IPv6会说服Tomcat打开IPv4绑定。