How does one get tomcat to bind to ipv4 address?
Many suggested updating
catalina.sh startup script. Yes, that solution would work, but
catalina.sh script is not meant to be customized/updated. All changes should go into the customization script instead, i.e.
TOMCAT_HOME/bin/setenv.sh doesn't exist by default, you need to create it. Check the
catalina.sh script and you will see the startup script checks if
setenv.sh exists, and executes if it does.
So, I suggest you create new
TOMCAT_HOME/bin/setenv.sh script with a single line:
JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true "
Ok I finally solved it. I was directed to try this and Henk's solution. Neither of which seemed to work with the remote virtual server. I'm guessing the fact that because I'm on a shared kernel space so the provider prevents this. In any case I added:
JAVA_OPTS= $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses to the catalina.sh startup script and that seemed to have fixed the issue of binding tomcat to ipv6.
The correct syntax for modifying catalina.sh would be:
JAVA_OPTS=" $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true "
If you used this installer: "Apache Solr for TYPO3", you can change the address in the file
server.xml. The default points to localhost, so look for 127.0.0.1 and change it into the IPv4-address you want. Don't forget to restart Tomcat6 for the changes to take effect.
See my comment below on how to disable IPv6 on Ubuntu 11.10.
I have successfully tested this on a Virtualbox-VM on my Mac. The address for the connector port 8080 has been changed from 127.0.0.1 to 0.0.0.0 in
Then disabling IPv6 makes the "tcp6" to go away, so it's binded to an IPv4-only address.
Before / with IPv6 enabled:
# netstat -anp | grep 8080 tcp6 0 0 :::8080 :::* LISTEN 1972/java
After / IPv6 disabled:
# netstat -anp | grep 8080 tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2045/java