De Tomcat java.net.BindException: adres al in gebruik Fout in Java

1. Overzicht

In deze korte tutorial zullen we kijken naar de oorzaak van de common java.net.BindingException Fout: adres al in gebruik fout en hoe we ermee kunnen omgaan.

2. Wanneer treedt de fout op?

Zoals we weten, gebruikt de Apache Tomcat-server standaard de 8080-poort.

Poortnummers lopen echter van 0 tot 65535, een poort kan op elk moment maar door één applicatie worden bezet.

De uitzondering stelt dat de toepassing een poort probeert te gebruiken die al in gebruik is genomen door een ander proces, of dat we de Tomcat-server niet correct hebben gestopt.

3. Diagnose

Om deze fout op te lossen, kunnen we de service die die poort gebruikt, beëindigen of onze webserver wijzigen om op een andere poort te draaien.

3.1. Het conflict ontdekken

In dit geval moeten we uitzoeken welke applicatie de poort gebruikt.

De netstat commando kan worden gebruikt om de huidige TCP / IP-verbindingen te ontdekken.

Hieronder staan ​​de opdrachten die kunnen worden gebruikt om het proces in verschillende omgevingen te vinden en te beëindigen.

Op Windows, de laatste kolom met uitvoer geeft ons de proces-ID van de service die momenteel wordt uitgevoerd op 8080:

netstat -ano | zoek "8080"

Uitgang:

TCP 0.0.0.0:8080 0.0.0.0:0 LUISTEREN 21376 

Hier is 21376 de proces-id van het proces dat luistert op poort 8080.

Op Unix / Linux-omgeving:

netstat -pant | grep "8080"

Uitgang:

TCP 0.0.0.0:8080 0.0.0.0:0 LUISTEREN 21376 

Hetzelfde als Windows-uitvoer. Hier is 21376 de proces-id van het proces dat luistert op poort 8080.

Op Mac OS X:

lsof -t -i: 8080

Uitgang:

21376

Alleen de PID wordt weergegeven.

3.2. Server uitvoeren op een andere poort

Als we weten welk proces wordt uitgevoerd, waarom het wordt uitgevoerd en dat het op die poort moet worden uitgevoerd, kunnen we de poort wijzigen waarop onze servertoepassing probeert te draaien.

Om de Tomcat-poort te wijzigen, moeten we het server.xml het dossier. Om dit te doen:

  • Open kater / conf map
  • Bewerk server.xml
  • vervang de connector poort met de nieuwe haven
  • herstart de tomcat-server

De server.xml bestand ziet er als volgt uit:

Nu draait Tomcat op de aangepaste poort.

3.3. Het doden van de lopende dienst

Om het lopende proces te stoppen, kunnen we de doden opdracht.

Met behulp van de proces-ID die we in 3.1. Hebben gevonden, hebben we verschillende opdrachten nodig, afhankelijk van het besturingssysteem dat we gebruiken.

Op Windows-omgeving:

taskkill / F / PID 21376

Op Unix / Linux-omgeving:

doden - 21376

Mac OS X-omgeving:

doden -9 21376

4. Conclusie

Zoals vermeld aan het begin van het artikel, java.net.BindingException is een veel voorkomende maar gemakkelijk op te lossen fout.

De grootste moeilijkheid is het vinden van de conflicterende service met behulp van de poort met de netstat terminaltoepassing en besluit vervolgens de juiste actie te ondernemen.

Eenmaal ontdekt, is de oplossing eenvoudig.