L’exception java.net.BindException de Tomcat: erreur d’adresse déjà utilisée en Java

1. Vue d’ensemble

Dans ce rapide didacticiel, nous examinerons les causes de l’erreur __java.net.BindingException courante: adresse déjà utilisée par Use __error et la façon dont nous pouvons y remédier.

2. Quand l’erreur se produit-elle?

Comme nous le savons, le serveur Apache Tomcat utilise par défaut le port 8080.

Les numéros de port vont de 0 à 65535, cependant , un port ne peut être occupé que par une seule application à tout moment

L’exception indique que l’application tente d’utiliser un port déjà utilisé par un autre processus ou que le serveur Tomcat n’a pas été arrêté correctement.

3. Diagnostiquer

Pour résoudre cette erreur, nous pouvons soit tuer le service prenant ce port, soit changer notre serveur Web pour qu’il fonctionne sur un autre port.

3.1. À la découverte du conflit

Dans ce cas, nous devons savoir quelle application utilise le port.

La commande netstat peut être utilisée pour découvrir les connexions TCP/IP en cours.

Vous trouverez ci-dessous les commandes pouvant être utilisées pour rechercher et tuer le processus dans différents environnements.

  • Sous Windows, ** la dernière colonne de sortie nous indiquera le processus du service en cours d’exécution sur 8080:

netstat -ano | find "8080"

Sortie:

TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21376

Ici, 21376 est l’ID de processus du processus qui écoute sur le port 8080.

  • Sous environnement Unix/Linux ** :

netstat -pant | grep "8080"

Sortie:

TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21376

Identique à la sortie Windows. Ici, 21376 est l’ID de processus du processus qui écoute sur le port 8080.

  • Sous Mac OS X: **

lsof -t -i :8080

Sortie:

21376

Il affichera le PID uniquement.

3.2. Exécution du serveur sur un autre port

Si nous savons quel processus est en cours d’exécution, pourquoi il s’exécute et s’il doit s’exécuter sur ce port, nous pouvons modifier le port sur lequel notre application serveur tente de s’exécuter.

Pour changer le port de Tomcat, nous devons éditer le fichier server.xml . Pour faire ça:

  • Ouvrez __tomcat/conf __folder

  • edit server.xml

  • remplacez le port _connector _ par le nouveau port

  • redémarrer le serveur tomcat

Le fichier server.xml ressemble à ceci:

<Connector port="8080" protocol="HTTP/1.1"
  connectionTimeout="20000" redirectPort="8443"/>

Tomcat s’exécutera maintenant sur le port personnalisé.

3.3. Tuer le service en cours d’exécution

  • Pour arrêter le processus en cours, nous pouvons utiliser la commande kill . **

En utilisant l’ID de processus trouvé dans la version 3.1., Nous aurons besoin de commandes différentes selon le système d’exploitation utilisé.

  • Sous environnement Windows: **

taskkill/F/PID 21376
  • Sous environnement Unix/Linux: **

kill - 21376
  • Environnement Mac OS X: **

kill -9 21376

4. Conclusion

Comme mentionné au début de l’article, java.net.BindingException est une erreur répandue mais facilement résolue.

La principale difficulté consiste à trouver le service en conflit en utilisant le port avec l’application de terminal netstat , puis à décider du plan d’action approprié.

Une fois découvert, le correctif est facile.