web-dev-qa-db-fra.com

Comment faire pour que Tomcat se lie à l'adresse IPv4?

J'ai récemment installé Tomcat via un script d'installation de la communauté Apache solr typo3 et j'ai passé les 3 derniers jours à essayer de comprendre pourquoi cela ne fonctionnerait pas jusqu'à ce que je remarque par hasard que lorsque j'ai demandé le processus d'écoute sur le port via "lsof -i ", il était lié au protocole ipv6. J'ai googlé partout et la plupart disent que définir l'adresse sur .0.0. dans le connecteur Tomcat résout ce problème, d'autres disent que définir Java_OPTS = "- Djava.net.preferIPv4Stack = true" =; J'ai essayé le premier qui ne fonctionne pas mais le second je ne sais pas où le mettre. Une solution que j'ai lue quelque part a suggéré de le mettre dans setenv.sh mais je ne trouve pas ce fichier dans mon installation Tomcat. J'apprécierais pour le moment toute aide à ce sujet. La version Tomcat est 6.x et le système d'exploitation est Ubuntu 11.10. Merci

33
Dark Star1

Beaucoup ont suggéré de mettre à jour catalina.sh script de démarrage. Oui, cette solution fonctionnerait, mais catalina.sh le script n'est pas destiné à être personnalisé/mis à jour. Toutes les modifications doivent plutôt entrer dans le script de personnalisation, c'est-à-dire setenv.sh.

REMARQUE: Tomcat_HOME/bin/setenv.sh n'existe pas par défaut, vous devez le créer. Vérifier la catalina.sh script et vous verrez le script de démarrage vérifier si setenv.sh existe et s'exécute si c'est le cas.

Donc, je vous suggère de créer de nouveaux Tomcat_HOME/bin/setenv.sh script avec une seule ligne:

Java_OPTS="$Java_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true "
29
nevenc

Ok, je l'ai finalement résolu. J'ai été dirigé vers essayez ceci et la solution de Henk. Aucun des deux ne semblait fonctionner avec le serveur virtuel distant. Je suppose que parce que je suis sur un espace de noyau partagé, le fournisseur empêche cela. En tout cas j'ai ajouté: Java_OPTS= $Java_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses au script de démarrage catalina.sh et qui semblait avoir résolu le problème de la liaison de Tomcat à ipv6.

28
Dark Star1

La syntaxe correcte pour modifier catalina.sh serait:

Java_OPTS=" $Java_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true "
4
yglodt

Si vous avez utilisé ce programme d'installation: " Apache Solr pour TYPO ", vous pouvez modifier l'adresse dans le fichier server.xml. La valeur par défaut pointe vers localhost, alors recherchez 127.0.0.1 et changez-le en l'adresse IPv4 que vous souhaitez. N'oubliez pas de redémarrer Tomcat6 pour que les modifications prennent effet.

MISE À JOUR, 20120521

Voir mon commentaire ci-dessous sur la façon de désactiver IPv6 sur Ubuntu 11.10.

J'ai testé cela avec succès sur une Virtualbox-VM sur mon Mac. L'adresse du port de connecteur 8080 est passée de 127.0.0.1 à 0.0.0.0 dans server.xml.

Ensuite, la désactivation d'IPv6 fait disparaître le "tcp6", il est donc lié à une adresse IPv4 uniquement.

Avant/avec IPv6 activé:

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

Après/IPv6 désactivé:

# netstat -anp | grep 8080   
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      2045/Java
3
Henk

Avec l'autre réponse en utilisant setenv.sh et CATALINA_OPTS ...

En utilisant Tomcat SSL avec APR, la seule façon de faire en sorte que Tomcat se lie à ipv4 était d'ajouter ceci à la configuration du connecteur:

address="0.0.0.0"

server.xml ressemble à ceci:

<Connector port="8443" protocol="org.Apache.coyote.http11.Http11AprProtocol"
               maxThreads="150"
               SSLEnabled="true"
               scheme="https"
               compression="off"
               connectionTimeout="1190"
               address="0.0.0.0"
               >
0
comfytoday

Bien que ce ne soit probablement pas la méthode préférée, j'ai observé que désactiver IPv6 au niveau du noya convaincra Tomcat d'ouvrir une liaison IPv4.

0
pierce.jason