java.net.BindException: адрес уже используется: 8080

Я пытаюсь запустить экземпляр сборки веб-приложения Java, но он останавливается в середине сборки с этой ошибкой:

java.net.BindException: адрес уже используется: 8080

Очевидно, он пытается привязаться к порту 8080, но другой процесс уже сделал это и не будет делиться.

Итак, я проверил, какой процесс использует 8080 (netstat -anp | grep 8080). Судя по всему, процесс jsvc.exec прослушивает мой порт 8080. При проверке (ps -fp) я узнаю, что это Tomcat (boostrap.jar).

Итак, чтобы увидеть, будет ли сборка хотя бы завершена, я убил процесс. И да!! Сборка веб-приложения установлена ​​полностью. Но когда я перешел в своем браузере на localhost: 8080, он говорит, что служба не запущена, потому что я убил Tomcat! Я даже пробовал localhost:8080/manager/list. Все еще говорит, что служба не работает.

Итак, я перезапустил Tomcat, проверил localhost: 8080, и Tomcat был зарезервирован. Проверил localhost:8080/manager/list, но не увидел только что созданный экземпляр Webapp.

Чего я тут не понимаю! Мое веб-приложение не будет создано, если я запущу tomcat (не могу поделиться 8080). И если я убью tomcat, чтобы завершить сборку, веб-приложение, очевидно, не сможет запуститься, потому что Tomcat мертв.

Пожалуйста помогите. Запуск Tomcat 5.5 в среде LAMP на удаленном сервере. ПРИМЕЧАНИЕ. Я запускаю предварительно созданное приложение для сборки веб-приложений (war), в которое я не могу вносить изменения.


person Arno Hart    schedule 30.03.2012    source источник
comment
Как вы создаете свое веб-приложение? Используете Мавен? Как получилось, что ваше приложение должно запускаться на порту 8080? Это совершенно правильно, я просто пытаюсь ухватить недостающие части.   -  person Guillaume Polet    schedule 30.03.2012


Ответы (2)


Во время сборки? Процесс сборки обычно не требует открытия порта. Проблема в том, что две программы пытаются использовать один и тот же порт. Не устраняя основную проблему, немедленное решение состоит в том, чтобы изменить порт, на котором работает Tomcat. Чтобы изменить порт, на котором работает Tomcat, отредактируйте install_dir/conf/server.xml и измените атрибут порта элемента Connector с 8080 на 8081.

person freeone3000    schedule 30.03.2012
comment
Спасибо freeone3000 за то, что прочитали мой вопрос. Ваша рекомендация имеет смысл, поэтому я попробовал. 1) Я изменил элемент Connector в файле server.xml на 8081. 2) Перезагрузил сервер 3) Запустил netstat -anp | grep 8081 и уверен, что запущен enuff tomcat (jsvc.exec) 4) Снова запустите сборку. И оно завершено. 5) Когда я перешел на localhost:8080, я все еще получаю сообщение об ОШИБКЕ HTTP: 503 Проблема с доступом к /. Причина: Сервис недоступен 6) И когда я пытаюсь использовать localhost:8081, он не разрешается (я ожидал увидеть стандартную страницу Apache Tomcat). Не знаю, что тут сказать, кроме того, что я все еще в замешательстве. - person Arno Hart; 30.03.2012
comment
Дополнительное примечание здесь. Когда я убиваю экземпляр сборки (нажимая return на консоли терминала), ошибка 503 исчезает на локальном хосте: 8080, и страница больше не разрешается. - person Arno Hart; 30.03.2012
comment
Хорошо. Итак, ваш экземпляр сборки запускает веб-сервер на порту 8080. По какой-то причине. Ознакомьтесь с документацией по той WAR, которую вы создаете, чтобы понять, зачем это нужно и как получить к ней доступ. Что касается экземпляра tomcat, если вы не можете получить доступ к localhost:8081 , значит, на этом порту локально не работает веб-сервер. Если у вас есть ошибка класса 400 или 500, о которой иногда сообщается, что вы не можете подключиться к ошибкам в веб-браузерах, то вы обращаетесь к неправильному URI и должны использовать URI, обычно используемый для доступа к вашему локальному приложению. - person freeone3000; 04.04.2012
comment
Спасибо. Вы были очень полезны. Я понял, что готовое веб-приложение (война) поставляется с внутренним клиентским сервером, назначенным на порт 8080. Поэтому конфликтует с tomcat (8080). Поэтому я переключил кота на 8081. Проблема решена. Спасибо - person Arno Hart; 01.06.2012

Если вы впервые запускаете Confluence или недавно добавляли приложения или вносили изменения в систему, узнайте, что работает на порту 8080.

Если Confluence не был закрыт должным образом, вы можете перезагрузить компьютер или завершить процесс: В Windows:

  1. Нажмите Ctrl-alt-delete и посмотрите на открытые программы. Найдите {{java.exe}}.

  2. В командном окне запустите {{netstat -an}}. Проверьте, какие порты используются. Вы можете определить, какое приложение работает таким образом, а затем закрыть его из диспетчера задач.

person Yogesh Prajapati    schedule 30.03.2012
comment
Спасибо. Я понял, что готовое веб-приложение (война) поставляется с внутренним клиентским сервером, назначенным на порт 8080. Поэтому конфликтует с tomcat (8080). Поэтому я переключил кота на 8081. Проблема решена. Спасибо - person Arno Hart; 01.06.2012