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ű.