如何让tomcat绑定到ipv4地址?

Dar*_*ar1 37 typo3 solr tomcat6

我最近通过 apache solr Typ3 社区的安装脚本安装了 tomcat,并在过去的 3 天里试图弄清楚为什么它不起作用,直到偶然我注意到当我通过“ lsof -i”查询侦听端口的进程时,它被绑定到ipv6协议。

我到处搜索,大多数人说0.0.0.0在 tomcat 连接器中设置地址可以解决这个问题,其他人说设置JAVA_OPTS="-Djava.net.preferIPv4Stack=true".

我试过前者不起作用,但后者我不确定把它放在哪里。我在某处读到的一种解决方案建议将其放入,setenv.sh但在我的 tomcat 安装中找不到此文件。目前我将不胜感激。

tomcat 版本为 6.x,操作系统为 ubuntu 11.10。

谢谢

nev*_*enc 34

许多人建议更新catalina.sh启动脚本。是的,该解决方案可行,但catalina.sh脚本并不意味着要自定义/更新。所有更改都应进入自定义脚本,即setenv.sh.

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

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

JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true "
Run Code Online (Sandbox Code Playgroud)

  • 我也会使用 CATALINA_OPTS 而不是 JAVA_OPTS,特别是如果您有其他 JVM 选项要在 Tomcat 启动时传递给 JVM。如果您使用 JAVA_OPTS,相同的选项将被传递到 Tomcat 关闭中,这可能不是您想要/期望的。改用 CATALINA_OPTS :) (3认同)

Dar*_*ar1 28

好的,我终于解决了。我被指示尝试这个和 Henk 的解决方案。两者似乎都不适用于远程虚拟服务器。我猜测的事实是,因为我在共享内核空间上,所以提供程序会阻止这种情况。无论如何,我JAVA_OPTS= $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses在 catalina.sh 启动脚本中添加了:这似乎解决了将 tomcat 绑定到 ipv6 的问题。

  • 所以你在一个共享内核的 VPS 上......天哪! (3认同)

ygl*_*odt 5

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

JAVA_OPTS=" $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true "
Run Code Online (Sandbox Code Playgroud)