Tomcat java.net.BindException: Adresse bereits verwendet Fehler in Java

1. Überblick

In diesem kurzen Lernprogramm werden wir untersuchen, was den häufigen Fehler __java.net.BindingException verursacht: Adresse bereits verwendet __error und wie wir damit umgehen können.

2. Wann tritt der Fehler auf?

Wie wir wissen, verwendet der Apache Tomcat-Server standardmäßig den 8080-Port.

Portnummern reichen von 0 bis 65535, ein Port kann jedoch nur von einer einzelnen Anwendung belegt werden .

Die Ausnahme besagt, dass die Anwendung versucht, einen Port zu verwenden, der bereits von einem anderen Prozess belegt wurde, oder der Tomcat-Server nicht ordnungsgemäß gestoppt wurde.

  1. Diagnose

Um diesen Fehler zu beheben, können wir entweder den Dienst beenden, der diesen Port verwendet, oder unseren Webserver so ändern, dass er auf einem anderen Port ausgeführt wird.

3.1. Den Konflikt entdecken

In diesem Fall müssen wir herausfinden, welche Anwendung den Port verwendet.

Mit dem Befehl netstat können Sie aktuelle TCP/IP-Verbindungen ermitteln.

Nachfolgend finden Sie die Befehle, mit denen Sie den Prozess in verschiedenen Umgebungen finden und beenden können.

  • Unter Windows ** erhalten Sie in der letzten Spalte der Ausgabe die Prozess-ID des aktuell auf 8080 laufenden Dienstes:

netstat -ano | find "8080"

Ausgabe:

TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21376

Hier ist 21376 die Prozess-ID des Prozesses, der Port 8080 überwacht.

  • In Unix/Linux-Umgebung ** :

netstat -pant | grep "8080"

Ausgabe:

TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21376

Entspricht der Windows-Ausgabe. Hier ist 21376 die Prozess-ID des Prozesses, der Port 8080 überwacht.

  • Unter Mac OS X: **

lsof -t -i :8080

Ausgabe:

21376

Es wird nur die PID angezeigt.

3.2. Server wird an einem anderen Port ausgeführt

Wenn wir wissen, welcher Prozess läuft, warum er ausgeführt wird und dass er an diesem Port ausgeführt werden muss, können wir den Port ändern, auf dem unsere Serveranwendung ausgeführt werden soll.

Um den Tomcat-Port zu ändern, müssen Sie die Datei server.xml bearbeiten. Um dies zu tun:

  • Öffnen Sie den Ordner _tomcat/conf _

  • edit server.xml

  • Ersetzen Sie den _connector-Port mit dem new-Port_

  • Starten Sie den Tomcat-Server neu

Die server.xml -Datei sieht folgendermaßen aus:

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

Jetzt wird Tomcat auf dem angepassten Port ausgeführt.

3.3. Den laufenden Service töten

Um den laufenden Prozess zu stoppen, können Sie den Befehl kill verwenden. **

Mit der Prozess-ID, die wir in 3.1. Gefunden haben, benötigen wir abhängig vom Betriebssystem, das wir ausführen, unterschiedliche Befehle.

  • In Windows-Umgebung: **

taskkill/F/PID 21376
  • In Unix/Linux-Umgebung: **

kill - 21376
  • Mac OS X-Umgebung: **

kill -9 21376

4. Schlussfolgerung

Wie bereits zu Beginn des Artikels erwähnt, ist java.net.BindingException ein häufiger, aber leicht zu lösender Fehler.

Die Hauptschwierigkeit besteht darin, den widersprüchlichen Dienst über den Port mit der netstat -Terminalanwendung zu finden und dann die geeignete Vorgehensweise festzulegen.

Einmal entdeckt, ist der Fix einfach.