Tomcat java.net.BindException: Chyba adresy v Jave sa už používa

1. Prehľad

V tomto rýchlom návode sa pozrieme na to, čo je bežné Chyba java.net.BindingException: adresa sa už používa chyby a ako sa s nimi môžeme vysporiadať.

2. Kedy nastane chyba?

Ako vieme, server Apache Tomcat štandardne používa port 8080.

Čísla portov sa pohybujú od 0 do 65535, port môže kedykoľvek obsadiť iba jedna aplikácia.

Výnimka uvádza, že sa aplikácia pokúša použiť port, ktorý už prijal iný proces, alebo sme server Tomcat nezastavili správne.

3. Diagnostikovanie

Na vyriešenie tejto chyby môžeme buď zabiť službu prijímajúcu tento port, alebo môžeme zmeniť náš webový server tak, aby bežal na inom porte.

3.1. Objavovanie konfliktov

V takom prípade musíme zistiť, ktorá aplikácia port používa.

The netstat príkazom je možné zistiť aktuálne pripojenie TCP / IP.

Ďalej sú uvedené príkazy, ktoré možno použiť na vyhľadanie a ukončenie procesu v rôznych prostrediach.

V systéme Windows posledný stĺpec výstupu nám poskytne ID procesu služby, ktorá je momentálne spustená na 8080:

netstat -ano | nájsť „8080“

Výkon:

TCP 0.0.0.0:8080 0.0.0.0:0 POČÚVANIE 21376 

21376 je tu ID procesu, ktorý načúva na porte 8080.

V prostredí Unix / Linux:

netstat -pant | grep "8080"

Výkon:

TCP 0.0.0.0:8080 0.0.0.0:0 POČÚVANIE 21376 

Rovnaké ako výstup systému Windows. 21376 je tu ID procesu, ktorý načúva na porte 8080.

V systéme Mac OS X:

lsof -t -i: 8080

Výkon:

21376

Bude zobrazovať iba PID.

3.2. Spustený server na inom porte

Ak vieme, aký proces je spustený, prečo je spustený a že musí byť spustený na danom porte, môžeme zmeniť port, na ktorom sa naša serverová aplikácia pokúša spustiť.

Ak chcete zmeniť port Tomcat, musíme upraviť server.xml spis. Urobiť toto:

  • Otvorené kocúr / konf priečinok
  • upraviť server.xml
  • vymeňte konektorový port s nový prístav
  • reštartujte server Tomcat

The server.xml súbor vyzerá takto:

Teraz bude Tomcat bežať na prispôsobenom porte.

3.3. Zabíjanie bežiacej služby

Na zastavenie bežiaceho procesu môžeme použiť zabiť príkaz.

Pomocou ID procesu, ktoré sme našli v 3.1., Budeme vyžadovať rôzne príkazy v závislosti od operačného systému, ktorý používame.

V prostredí Windows:

taskkill / F / PID 21376

V prostredí Unix / Linux:

zabiť - 21376

Prostredie Mac OS X:

zabiť -9 21376

4. Záver

Ako bolo uvedené na začiatku článku, java.net.BindingException je prevládajúca, ale ľahko vyriešiteľná chyba.

Hlavným problémom je nájsť konfliktnú službu pomocou portu s netstat terminálová aplikácia a potom sa rozhodne o príslušnom postupe.

Po odhalení je oprava ľahká.


$config[zx-auto] not found$config[zx-overlay] not found