Apache Tomcat: java.net.ConnectException: соединение отказано - PullRequest
27 голосов
/ 18 апреля 2011

пока я пытаюсь остановить сервер Tomcat, он выдает ошибку, подобную этой.

[root@server classes]# service tomcat restart
Stopping Tomcat service:  Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:       /usr
Apr 17, 2011 10:11:53 PM org.apache.catalina.startup.Catalina stopServer
SEVERE: Catalina.stop: 
java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:310)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:176)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:163)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:381)
    at java.net.Socket.connect(Socket.java:537)
    at java.net.Socket.connect(Socket.java:487)
    at java.net.Socket.<init>(Socket.java:384)
    at java.net.Socket.<init>(Socket.java:198)
    at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:421)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:337)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:415)
                                                           [  OK  ]

Starting Tomcat service: Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:       /usr

Может кто-нибудь помочь мне решить эту проблему?

Ответы [ 9 ]

29 голосов
/ 03 июня 2011

Я видел много неадекватных ответов, пытаясь выяснить это.Общий ответ: «Вы пытаетесь остановить что-то, что не запустилось» или «на порте, который вам нужен, запущена какая-то другая программа».

Проблема для меня оказалась в брандмауэре.Я даже не рассматривал это, но порт 8005 (порт, используемый для отключения, спасибо mindas), был заблокирован.Я изменил это, и теперь больше нет ошибок.Удачи.

6 голосов
/ 18 апреля 2011

Работал ли Tomcat до того, как вы перезапустили его?Было ли какое-либо другое приложение, прослушивающее этот порт?

Исключение вызвано тем, что никто не слушал командный порт (см. <Server port="..." в $tomcat_home/conf/server.xml).

4 голосов
/ 01 августа 2014

В зависимости от вашей версии Tomcat, это может быть простая проблема (ошибка) с 0-байтовым файлом журнала.Посмотрите на /var/log/tomcatX.Y, где XY - ваша версия, с которой вы работаете, и проверьте, доступен ли файл журнала catalina.out для чтения и записи.Если он имеет 0 байт и недоступен, просто удалите его и перезапустите Tomcat.Это решило проблему для нас уже несколько раз.

2 голосов
/ 12 мая 2016

Значение этого исключения объясняется здесь: https://bz.apache.org/bugzilla/show_bug.cgi?id=27829

Сводка: Java умирает, вызывается завершающий хук Tomcat, генерируется исключение.

Таким образом, если брандмауэр предотвращает поступление сообщения о завершении работы Tomcat, Java в конечном итоге умрет первым (например, во время перезагрузки / выключения системы), и появится исключение.

Есть и другие возможности.

В моем случае моя проблема была связана с неправильной установкой initscript (Linux). Это подразумевало, что Java была убита ОС во время выключения / перезагрузки, а не в результате выполнения сценария. Решение так просто, как это:

chkconfig --del initscript
chkconfig --add initscript

До исправления у меня было следующее в rc.d:

find /etc/rc.d | grep initscript | sort
/etc/rc.d/init.d/initscript
/etc/rc.d/rc2.d/S85initscript
/etc/rc.d/rc3.d/S85initscript
/etc/rc.d/rc4.d/S85initscript
/etc/rc.d/rc5.d/S85initscript

После исправления:

find /etc/rc.d | grep initscript | sort
/etc/rc.d/init.d/initscript
/etc/rc.d/rc0.d/K15initscript
/etc/rc.d/rc1.d/K15initscript
/etc/rc.d/rc2.d/K15initscript
/etc/rc.d/rc3.d/K15initscript
/etc/rc.d/rc4.d/K15initscript
/etc/rc.d/rc5.d/S85initscript
/etc/rc.d/rc6.d/K15initscript

Вывод: если вы получаете это исключение, убедитесь, что Tomcat корректно завершает работу, а не в результате прекращения работы Java. Проверьте ваш брандмауэр, сценарии выключения и т. Д.

1 голос
/ 10 марта 2015

Вы можете попробовать остановиться и начать снова с:

$ cd /path/apache-tomcat x.x.x/bin

затем

$ sh shutdown.sh

после успешного завершения последнего шага вы должны включить кота и каталину командой

$ sh startup.sh

Мне удалось решить мою проблему таким образом

1 голос
/ 07 марта 2012

Не уверен, что ваша проблема была решена и как. Но я столкнулся с той же проблемой при попытке запустить экземпляр tomcat.

  • Порт не использовался.
  • Не было проблемы с брандмауэром.
  • Экземпляр Tomcat запускался нормально.

Я изменил пользовательский скрипт завершения работы, и эта проблема была исправлена. Старый сценарий: -

export CATALINA_HOME = / home / lrsprod / ELA / tomcat6 / apache-tomcat-6.0.35 $ CATALINA_HOME / bin / catalina.sh stop

Добавлена ​​каталиновая основа.

export CATALINA_BASE = / home / lrsprod / ELA / tomcat6 / ela_instance экспорт CATALINA_HOME = / home / lrsprod / ELA / tomcat6 / apache-tomcat-6.0.35 $ CATALINA_HOME / bin / catalina.sh stop

Это добилось цели.

0 голосов
/ 27 апреля 2016

Существует еще одно объяснение этой проблемы отказа в соединении, которое я пропустил в ответах выше.В моем случае у меня был запущен поток (кварцевый планировщик), запущенный из прослушивателя контекста (в contextInitialized), который никогда не останавливался (как в contextDestroyed).

Это, в свою очередь, привело к тому, что связанный с сервером порт былзакрытый, где контейнер продолжал работать (следовательно: соединение на порт сервера было отклонено).

Я исправил остановку кварца в contextDestroyed, и с тех пор у меня не возникало этой проблемы.

Смотрите здесь похожие проблемы: Tomcat не останавливается.Как я могу отладить это?

0 голосов
/ 05 февраля 2016

Другая возможная основная причина заключается в том, что ваш tomcat еще не полностью запущен.

Если вы выполните ps -ef| grep apache, вы увидите, что сервер работает, и если вы проверите catalina.out, он покажет, чтосервер инициализирован за 123 мс, но он все еще может развертывать приложения в каталоге ваших веб-приложений.

0 голосов
/ 02 января 2014

Я тоже сталкивался с этой проблемой. Вы можете попробовать любой из этих шагов:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...