A Tomcat java.net.BindException: A cím már használatban van a Java-ban

1. Áttekintés

Ebben a gyors bemutatóban megvizsgáljuk, mi okozza a közöset java.net.BindingException hiba: A cím már használatban van hiba és hogyan tudjuk kezelni.

2. Mikor jelentkezik a hiba?

Mint tudjuk, az Apache Tomcat szerver alapértelmezés szerint a 8080 portot használja.

A portszámok 0 és 65535 között mozognak, egy portot bármikor csak egyetlen alkalmazás foglalhat el.

A kivétel azt állítja, hogy az alkalmazás olyan portot próbál használni, amelyet valamilyen más folyamat már elfogadott, vagy mi nem állítottuk le megfelelően a Tomcat szervert.

3. Diagnosztizálás

A hiba megoldása érdekében megölhetjük az adott portot igénybe vevő szolgáltatást, vagy megváltoztathatjuk webszerverünket úgy, hogy egy másik porton fusson.

3.1. A konfliktus felfedezése

Ebben az esetben meg kell találnunk, hogy melyik alkalmazás használja a portot.

A netstat parancs használható az aktuális TCP / IP kapcsolatok felderítésére.

Az alábbiakban bemutatjuk azokat a parancsokat, amelyek felhasználhatók a folyamat megkeresésére és megölésére különböző környezetekben.

Windows rendszeren a kimenet utolsó oszlopa megadja a 8080-on jelenleg futó szolgáltatás folyamatazonosítóját:

netstat -ano | megtalálja a "8080" -t

Kimenet:

TCP 0.0.0.0:8080 0.0.0.0:08 HALLGATÁS 21376 

Itt a 21376 a 8080-as porton figyelő folyamat folyamatazonosítója.

Unix / Linux környezetről:

netstat -pant | grep "8080"

Kimenet:

TCP 0.0.0.0:8080 0.0.0.0:08 HALLGATÁS 21376 

Ugyanaz, mint a Windows kimenete. Itt a 21376 a 8080-as porton figyelő folyamat folyamatazonosítója.

Mac OS X rendszeren:

lsof -t -i: 8080

Kimenet:

21376

Csak a PID-t jeleníti meg.

3.2. A kiszolgáló futtatása egy másik porton

Ha tudjuk, hogy milyen folyamat fut, miért fut, és hogy azon a porton kell futnia, akkor megváltoztathatjuk azt a portot, amelyen a szerveralkalmazásunk megpróbál futtatni.

A Tomcat port megváltoztatásához szerkesztenünk kell a server.xml fájl. Ezt csináld meg:

  • Nyisd ki tomcat / konf mappába
  • szerkesztés server.xml
  • helyettesíteni a csatlakozó port a ... val új kikötő
  • indítsa újra a tomcat szervert

A server.xml fájl így néz ki:

Most a Tomcat a testreszabott porton fog futtatni.

3.3. A Futószolgálat megölése

A futási folyamat leállításához használhatjuk a megöl parancs.

A 3.1. Szakaszban talált folyamatazonosító használatával különböző parancsokra lesz szükségünk, a futtatott operációs rendszertől függően.

Windows környezetben:

taskkill / F / PID 21376

Unix / Linux környezetben:

ölni - 21376

Mac OS X környezet:

ölni -9 21376

4. Következtetés

Amint azt a cikk elején említettük, java.net.BindingException elterjedt, de könnyen megoldható hiba.

A fő nehézséget az jelenti, hogy megtalálja az ütköző szolgáltatást a porttal a netstat terminálalkalmazás, majd eldönti a megfelelő intézkedést.

Miután felfedezték, a javítás egyszerű.