1. Общ преглед
В този бърз урок ще разгледаме какво причинява често срещаната грешка в java.net.BindingException: Адресът вече е в грешка при използване и как можем да се справим с него.
2. Кога възниква грешката?
Както знаем, сървърът на Apache Tomcat по подразбиране използва порта 8080.
Номерата на портовете варират от 0 до 65535, но по всяко време порт може да бъде зает само от едно приложение .
Изключението гласи, че приложението се опитва да използва порт, който вече е зает от някакъв друг процес, или не сме спрели сървъра Tomcat правилно.
3. Диагностициране
За да разрешим тази грешка, можем или да убием услугата, която приема този порт, или да променим уеб сървъра ни да работи на друг порт.
3.1. Откриване на конфликта
В този случай трябва да разберем кое приложение използва порта.
Командата netstat може да се използва за откриване на текущи TCP / IP връзки.
По-долу са командите, които могат да се използват за намиране и унищожаване на процеса в различни среди.
В Windows последната колона на изхода ще ни даде идентификатора на процеса на услугата, работеща в момента на 8080:
netstat -ano | find "8080"
Изход:
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21376
Тук 21376 е идентификаторът на процеса, който се слуша на порт 8080.
В Unix / Linux среда :
netstat -pant | grep "8080"
Изход:
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21376
Същото като изхода на Windows. Тук 21376 е идентификаторът на процеса, който се слуша на порт 8080.
На Mac OS X:
lsof -t -i :8080
Изход:
21376
Той ще покаже само PID.
3.2. Работещ сървър на друг порт
Ако знаем какъв процес се изпълнява, защо се изпълнява и че трябва да се изпълнява на този порт, можем да променим порта, на който се опитва да работи нашето сървърно приложение.
За да сменим порта на Tomcat, трябва да редактираме файла server.xml . Да го направя:
- Отворете папката tomcat / conf
- редактирайте server.xml
- сменете порта на конектора с новия порт
- рестартирайте сървъра tomcat
Файлът server.xml изглежда така:
Сега Tomcat ще работи на персонализиран порт.
3.3. Убиване на бягащата услуга
За да спрем текущия процес, можем да използваме командата kill .
Използвайки идентификатора на процеса, който намерихме в 3.1., Ще изискваме различни команди в зависимост от операционната система, която работим.
В Windows среда:
taskkill /F /PID 21376
В Unix / Linux среда:
kill - 21376
Mac OS X среда:
kill -9 21376
4. Заключение
Както бе споменато в началото на статията, java.net.BindingException е често срещана, но лесно разрешима грешка.
Основната трудност е да се намери конфликтната услуга, използвайки порта с терминалното приложение netstat, след което да се реши подходящият начин на действие.
Веднъж открита, корекцията е лесна.